我正在尝试使用Borland C ++ Builder 6编译的DLL来扩展python。为了掌握基础知识,我使用以下示例作为测试:https://stackoverflow.com/a/145649/1385894
不幸的是我只能返回整数而不是字符串。另外,我无法使用示例中提供的包装器访问dll(在wrapper.py下面)。当我运行wrapper.py时,得到一个空壳。我只能访问它,如下面的dllTest.py所示,但它总是打印一个int。
dllTest.py
from ctypes import *
dll = windll.testThree
inst = dll.Foo_new()
res = dll.Foo_bar(inst)
print res
wrapper.py
from ctypes import *
lib = windll.testThree
class Foo(object):
def __init__(self):
self.obj = lib.Foo_new()
def bar(self):
lib.Foo_bar(self.obj)
f = Foo()
f.bar()
Foo.cpp中
#include <iostream>
using namespace std;
class Foo{
public:
void _stdcall bar(){
std::cout << "Hello" << std::endl;
}
};
extern "C" {
__declspec(dllexport) Foo* _stdcall Foo_new(){ return new Foo(); }
__declspec(dllexport) void _stdcall Foo_bar(Foo* foo){foo->bar(); }
}
为什么我不能输出字符串?我应该提一下,对于C / C ++,我是一个新手,这对我来说是一个巨大的学习曲线。
提前致谢。