2011-12-20 2 views
2

Итак, я совершенно не новичок в программировании на C на компьютере (я однажды скомпилировал код в колледже, но это все), поэтому, когда я пытался узнать Cython, я был наделен Мне не нужно ДЕЙСТВИТЕЛЬНО учиться любому C. Возможно, я слишком надеялся?Cython: Учебник не может найти внешние символы, которые никогда не ссылаются

В любом случае, я делаю учебник here и сталкиваюсь с проблемами сгенерированным кодом C. А именно, он дает следующие ошибки:

___pyx_pf_5queue_5Queue___dealloc__ 
queue.obj : error LNK2019: unresolved external symbol _queue_new referenced in function ___pyx_pf_5queue_5Queue___cinit__ 
\\Vs1\fs2\Operations\Software\VixarFiles_Dev\Playground\cython\tutorial and calgorithms src\queue.pyd : fatal error LNK1120: 2 unresolved externals 

Я не знаю, где он получает знак «_» перед этими именами, он должен писать их сам где-то, когда он создает дэ код C (это нигде в моем коде). Любая помощь или подсказки будут оценены.

Возможные причины неполадки: - Хорошо, я не последовал за учебником ИДЕАЛЬНО. Я не создал или не установил библиотеку, я просто выбросил исходный код в ту же папку, что и мои файлы python (и назвал их по-другому, чтобы убедиться, что он не перезаписывал файлы * .c). Из того, что я сделал в классе C++, это должно быть хорошо. Есть ли причина, по которой это может быть не так? Если это так, я не знаю, как правильно создать файл C.

Я хотел бы знать, есть ли у кого-нибудь представление о том, что я делаю неправильно, или о хороших шагах, которые я могу предпринять, чтобы выяснить, как его решить. Благодаря!

+4

Покажите нам, что вы на самом деле сделали. Списки файлов, сообщения об ошибках, вывод отладки, весь бит. – Marcin

+1

Чтобы эффективно использовать Cython, вам нужно знать некоторые C, по крайней мере, в настоящее время. В противном случае, просто придерживайтесь Python. –

+0

У меня такая же проблема - я подозреваю, что она связана с изменением имени C на архитектурах x86. См. Также http://forum.pellesc.de/index.php?topic=4103.0 и https://github.com/SciTools/conda-recipes-scitools/issues/29. У меня пока нет решения проблемы. – pelson

ответ

0

Мне кажется, что ваша проблема не связана с пониманием языка C как языка, но связана с получением соответствующих библиотек на вашем пути. Когда queue.obj бросает ошибку «неразрешенной внешней ссылки», обычно это означает, что код C (который генерирует cython) вызывает некоторую функцию из библиотеки, но ваша система сборки не может найти библиотеку. Извините, но я также новичок в cython, поэтому я не могу сорвать ожидаемый путь для функции _queue_new.

 Смежные вопросы

  • Нет связанных вопросов^_^