python - Cython:教程找不到从未引用过的外部符号

标签 python c cython

所以我对在计算机上用 C 编程完全陌生(我在大学里编译过代码,但仅此而已)所以当我尝试学习 Cython 时,我希望我不必真正学习任何 C。可能是我太有希望了?

无论如何,我正在做教程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文件。

我想知道是否有人知道我做错了什么,或者我可以采取哪些好的步骤来找出解决方法。谢谢!

最佳答案

在我看来,您的问题不在于了解 C 作为一种语言,而是与在您的路径中获取正确的库有关。当 queue.obj 抛出“未解析的外部引用”错误时,通常意味着 C 代码(cython 生成的)从库中调用了一些函数,但您的构建系统找不到该库。对不起,但我也是 cython 的新手,所以我不能说出 _queue_new 函数的预期路径。

关于python - Cython:教程找不到从未引用过的外部符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8569544/

相关文章:

python - 使用 cython.parallel.parallel 和 nogil 写入文件

python - Cython 函数指针和异常

Python 等待事件的其他方式

python - 如何使用列表理解生成不同 lambda 函数的列表?

python - Cython/Numba 编译函数可以改进 numpy.max(numpy.abs(a-b)) 吗?

c - 删除功能是否保证删除文件?

c - C中与指针运算有关的内存

python - 基于用户输入在 Python 中创建加权有向图

c - valgrind:无效的读取大小和堆栈溢出

python - 尽管使用 overwrite_a=True scipy BLAS 例程不会覆盖输入