Проблема расширения Python (ошибка компоновки)?

1

Я установил Python 3k (C:\Python30) и Visual Studio Professional Edition 2008.

Я изучаю этот.

Вот проблема:

C:\hello>dir
 Volume in drive C has no label.
 Volume Serial Number is 309E-14FB

 Directory of C:\hello

03/21/2009  01:15 AM    <DIR>          .
03/21/2009  01:15 AM    <DIR>          ..
03/21/2009  01:14 AM               481 hellomodule.c
               1 File(s)            481 bytes
               2 Dir(s)  10,640,642,048 bytes free


C:\hello>cl /LD hellomodule.c /Ic:\Python30\include c:\Python30\libs\python30.lib /link/out:hello.
dll
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
Copyright (C) Microsoft Corporation.  All rights reserved.

hellomodule.c
c:\hello\hellomodule.c(26) : warning C4716: 'inithello' : must return a value
Microsoft (R) Incremental Linker Version 9.00.21022.08
Copyright (C) Microsoft Corporation.  All rights reserved.

/out:hellomodule.dll
/dll
/implib:hellomodule.lib
/out:hello.dll
hellomodule.obj
c:\Python30\libs\python30.lib
   Creating library hellomodule.lib and object hellomodule.exp
hellomodule.obj : error LNK2019: unresolved external symbol _Py_InitModule referenced in function
_inithello
hello.dll : fatal error LNK1120: 1 unresolved externals

C:\hello>

В чем проблема? Пожалуйста, направляйте меня.

  • 0
    Я не уверен, поможет ли это. Я сделал скринкаст для компиляции расширений для друга. Это с VS2003. pylot.org/compiling_pylot_cpp_extensions.wmv .
  • 0
    @vasil vasil, спасибо большое.
Теги:
visual-studio
linker
visual-studio-2008

1 ответ

2
Лучший ответ

Если Python установлен в c:\python30, почему вы ищете библиотеки в c:\Python24\libs\python30?

И теперь, когда вы изменили вопрос, чтобы исправить это: -),

Я не думаю, что Py_InitModule уже доступен, вам нужно использовать PyModule_Create (это может измениться с ранних бета-версий Py3k, которое я смотрел в последний раз).

Основываясь на ваших комментариях, Дэвид, я бы посоветовал вам избегать сайтов HowTo за пределами официальных документов Python (я подозреваю, что они устарели). Было много работы на интерфейсе расширения на уровне 3.0, и лучшее место для поиска - либо на 3.0 docs или 3.1 alpha docs.

Конкретные инструкции по сборке Windows здесь.

  • 0
    Круто, он сгенерировал hello.dll, теперь, как мне его импортировать? (Я попытался импортировать hello). Но это говорит, что нет модуля с именем hello.
  • 0
    ПРИМЕЧАНИЕ: я только что заменил Py_InitModule на PyModule_Create. Это нормально или мне нужно что-то еще.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню