Python Cython动态库链接

Python Cython动态库链接,python,dll,cython,Python,Dll,Cython,实际上,我正在尝试将现有的C库链接到我的Cython程序 我可以访问库的入口点标题(.h),所有函数声明为: EXPORT_API int _stdcall LibFunction(); 我假设EXPORT\u API用于创建带有\u declspec(dllexport)的dll 我还可以访问.lib和.dll文件 我已尝试将此函数与Cython的中常见的cdef extern一起使用: cdef extern from "include\\entrypoint.h": int Li

实际上,我正在尝试将现有的C库链接到我的Cython程序

我可以访问库的入口点标题(.h),所有函数声明为:

EXPORT_API int _stdcall LibFunction();
我假设
EXPORT\u API
用于创建带有
\u declspec(dllexport)
的dll

我还可以访问.lib和.dll文件

我已尝试将此函数与Cython的中常见的
cdef extern一起使用:

cdef extern from "include\\entrypoint.h":
    int LibFunction()

def c_LibFunction():
    LibFunction()
我正在使用下面的setup.py

from setuptools import setup, Extension
from Cython.Distutils import build_ext

NAME = 'testlib'
REQUIRES = ['cython']
SRC_DIR = 'testlib'
PACKAGES = [SRC_DIR]

INCLUDE_DIR = 'testlib\include'
LIB_DIR = 'testlib\lib'

ext = Extension(SRC_DIR + '.wrapped',
                [SRC_DIR + '/wrapped.pyx'],
                include_dirs=[INCLUDE_DIR],
                library_dirs = [LIB_DIR],
                libraries=['cfunc', 'MyLib']
                )

if __name__ == "__main__":
    setup(
            install_requires=REQUIRES,
            packages=PACKAGES,
            name=NAME,
            ext_modules=[ext],
            cmdclass={"build_ext": build_ext}
            )
但是当我编译Cython
python setup.py build\u ext时,我得到一个未解析的外部引用:

错误LNK2001:未解析的外部符号\uuuu imp\u LibFunction

正如我在上所发现的,静态或动态库链接的问题似乎也是如此

我认为它来自setuptools编译选项,我试图研究使用distutils和Cython

问题是,我还尝试创建自己的C库(cfunc.lib,一个静态库),并以与上面所述相同的方式使用函数

我还在MyLib.lib上使用了
DUMPBIN
,并找到了符号
int\uu cdecl LibFunction(void)
,正如预期的那样,
\uu imp\uu
不在符号中


如果有人知道发生了什么,为什么会发生,以及我如何解决我的问题,那将非常有帮助

我终于找到了解决方案,所以如果将来有人需要帮助,我会发布它

我在Windows上使用Visual Studio编译代码

<> >即使我创建了 Cfcc我的代码>入口点.h <代码>只包含C样式函数声明,但DLL被编译为C++项目,这就是为什么它不能工作,名字的名称是坏的。 所以我只是在我的
setup.py