Cython: учебник не может найти внешние символы, на которые никогда не ссылаются - PullRequest
3 голосов
/ 20 декабря 2011

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

Во всяком случае, я делаю учебник здесь и сталкиваюсь с проблемами сгенерированного кода 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.

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

1 Ответ

2 голосов
/ 04 февраля 2012

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

...