<p>我无法在windows上复制基本SWIG示例。
我的错误已经在SWIG文档中声明了,我确信我已经做了他们提到的两个修复。对于此错误:</p>
<pre><code>>>> import example
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "example.py", line 2, in ?
import _example
ImportError: No module named _example
</code></pre>
<p>威斯康辛州投资委员会的文件明确指出:</p>
<p>忘记前导下划线(\u)。</p>
<p>如果您收到此消息,则表示</p>
<blockquote>
<p>you either forgot to compile the
wrapper code into an extension module
or you didn't give the extension
module the right name. Make sure that
you compiled the wrappers into a
module called <em>example.so. And don't
forget the leading underscore (</em>).forget the leading underscore (_).</p>
</blockquote>
<p>我确信我链接到了最新的wrap对象构建,并且我尝试过:“\example”、“\example.so”、“<em>example.dll”、“example.so”、“example.dll”,甚至一次都可以,并且生成的“example.py”与共享库位于同一文件夹中,并且python路径包含此目录忘记了前导下划线(</em>)。</p>
<p>例如:</p>
<pre><code>//example.h
int foo_sum(int a, int b);
</code></pre>
<p>是的。</p>
<pre><code>//example.cpp
int foo_sum(int a, int b) {
return a + b;
}
</code></pre>
<p>是的。</p>
<pre><code>//example.i
%module example
%{
#include "example.h"
%}
#include "example.h
</code></pre>
<p>以及build命令:</p>
<pre><code>gcc -IV:\temp\example\external\include\Python -O3 -Wall -c -fmessage-length=0 -oexample_wrap.o ..\example_wrap.c
g++ -IV:\temp\example\external\include\Python -O3 -Wall -c -fmessage-length=0 -oexample.o ..\example.cpp
g++ -LV:\temp\example\external\lib -shared -oexample.dll example_wrap.o example.o -lpython26
</code></pre>
<p>即使我不使用-O3,它仍然不起作用(我粘贴了发布配置中的构建命令)</p>
<p>我也尝试过,但没有成功:</p>
<pre><code>>>> import sys
>>> sys.path.<a href="https://www.cnpython.com/list/append" class="inner-link">append</a>("/your/module/path")
>>> import example
</code></pre>
<p>编辑:</p>
<p>显然,如果将dll重命名为“_example.pyd”,它将加载该dll,但加载的模块不包含我的“foo_sum”函数</p>
<p>编辑:
它现在可以工作了,我使用的是外部“C”,不包括.I文件中的头</p>