Ctypes使用Borland DLL返回字符串

时间:2014-07-29 13:54:55

标签: python c++ dll ctypes borland-c++

我正在尝试使用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 ++,我是一个新手,这对我来说是一个巨大的学习曲线。

提前致谢。

0 个答案:

没有答案