SWIG和Mingw-64与Python一起使用…;不是有效的Win32应用程序

SWIG和Mingw-64与Python一起使用…;不是有效的Win32应用程序,python,c++,c,dll,64-bit,Python,C++,C,Dll,64 Bit,我想使用Swig将我的C/C++“模型控制器”应用程序与Python HMI结合使用 我首先在我的ubuntu PC上测试了PythonSWIG这个简单的例子,它工作起来很有魅力 然后,我尝试在Win7-64位上使用Mingw-64执行同样的操作: 使用“包装” 在cmd窗口中,它是generate example_wrap.c…好的 然后在mingw终端下编译(我个人在explorer中单击鼠标右键启动,然后在此处单击Git Bash) 生成我的对象…确定 和链接 我有很多未定义的参考 exa

我想使用Swig将我的C/C++“模型控制器”应用程序与Python HMI结合使用

我首先在我的ubuntu PC上测试了PythonSWIG这个简单的例子,它工作起来很有魅力

然后,我尝试在Win7-64位上使用Mingw-64执行同样的操作:
使用“包装”

在cmd窗口中,它是generate example_wrap.c…好的

然后在mingw终端下编译(我个人在explorer中单击鼠标右键启动,然后在此处单击Git Bash)

生成我的对象…确定
和链接

我有很多未定义的参考

example_wrap.o:example_wrap.c:(.text+0xe3): undefined reference to `strlen'
example_wrap.o:example_wrap.c:(.text+0x1de): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0x5ff): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0x957): undefined reference to `strlen'
example_wrap.o:example_wrap.c:(.text+0x98f): undefined reference to `strcpy'
example_wrap.o:example_wrap.c:(.text+0x9c8): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0xa38): undefined reference to `strlen'
example_wrap.o:example_wrap.c:(.text+0xaaf): undefined reference to `strncpy'
example_wrap.o:example_wrap.c:(.text+0xaf5): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0xb11): undefined reference to `memset'
example_wrap.o:example_wrap.c:(.text+0xb57): undefined reference to `__imp_PyUnicode_AsUTF8String'
example_wrap.o:example_wrap.c:(.text+0xb76): undefined reference to `__imp_PyBytes_AsStringAndSize'
example_wrap.o:example_wrap.c:(.text+0xb88): undefined reference to `malloc'
example_wrap.o:example_wrap.c:(.text+0xbaa): undefined reference to `memcpy'
example_wrap.o:example_wrap.c:(.text+0xc15): undefined reference to `__imp_PyUnicode_FromString'
example_wrap.o:example_wrap.c:(.text+0xc69): undefined reference to `__imp_PyExc_MemoryError'
example_wrap.o:example_wrap.c:(.text+0xc7c): undefined reference to `__imp_PyExc_IOError'
example_wrap.o:example_wrap.c:(.text+0xc8f): undefined reference to `__imp_PyExc_RuntimeError'
example_wrap.o:example_wrap.c:(.text+0xca2): undefined reference to `__imp_PyExc_IndexError'

我添加了到python36.dll的链接(基于Anaconda3:)
/c/ProgramData/Anaconda3/python36.dll

ld -shared example.o example_wrap.o /c/ProgramData/Anaconda3/python36.dll -o _example.dll 并创建了dll

谢谢你

…dll已创建但无法工作:
“ModuleNotFoundError:没有名为“\u示例”的模块


然后将dll重命名为pyd…
导入错误:DLL加载失败:%1不是有效的Win32应用程序 …因为我运行的是32位python

启动anaconda python:

C:\Program Data\Anaconda3\python.exe
Python 3.5.1 |Anaconda 4.4.0 (64-bit)…
>>> import example
>>> example.gcd(42,36)
6
>>> example.cvar.Foo
3.0
终于,它工作了…花了很多时间

版本:
Windows 7 sp1
Swig 3.0.12
MingW-64
蟒蛇A3 4.4.0
gcc 6.2.0/ld 2.25

example_wrap.o:example_wrap.c:(.text+0xe3): undefined reference to `strlen'
example_wrap.o:example_wrap.c:(.text+0x1de): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0x5ff): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0x957): undefined reference to `strlen'
example_wrap.o:example_wrap.c:(.text+0x98f): undefined reference to `strcpy'
example_wrap.o:example_wrap.c:(.text+0x9c8): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0xa38): undefined reference to `strlen'
example_wrap.o:example_wrap.c:(.text+0xaaf): undefined reference to `strncpy'
example_wrap.o:example_wrap.c:(.text+0xaf5): undefined reference to `strcmp'
example_wrap.o:example_wrap.c:(.text+0xb11): undefined reference to `memset'
example_wrap.o:example_wrap.c:(.text+0xb57): undefined reference to `__imp_PyUnicode_AsUTF8String'
example_wrap.o:example_wrap.c:(.text+0xb76): undefined reference to `__imp_PyBytes_AsStringAndSize'
example_wrap.o:example_wrap.c:(.text+0xb88): undefined reference to `malloc'
example_wrap.o:example_wrap.c:(.text+0xbaa): undefined reference to `memcpy'
example_wrap.o:example_wrap.c:(.text+0xc15): undefined reference to `__imp_PyUnicode_FromString'
example_wrap.o:example_wrap.c:(.text+0xc69): undefined reference to `__imp_PyExc_MemoryError'
example_wrap.o:example_wrap.c:(.text+0xc7c): undefined reference to `__imp_PyExc_IOError'
example_wrap.o:example_wrap.c:(.text+0xc8f): undefined reference to `__imp_PyExc_RuntimeError'
example_wrap.o:example_wrap.c:(.text+0xca2): undefined reference to `__imp_PyExc_IndexError'
ld -shared example.o example_wrap.o /c/ProgramData/Anaconda3/python36.dll -o _example.dll ld -shared example.o example_wrap.o /c/ProgramData/Anaconda3/python36.dll /c/Windows/System32/msvcr120.dll -o _example.dll
C:\Program Data\Anaconda3\python.exe
Python 3.5.1 |Anaconda 4.4.0 (64-bit)…
>>> import example
>>> example.gcd(42,36)
6
>>> example.cvar.Foo
3.0