我基本上是在尝试用 Python 开发一个 Wrapper,它可以访问我用 C++ 开发的库。目前,它是非常基本的,因为这仅用于测试目的。
在我的 .h 文件中,我有以下内容:
#include <iostream>
class Foo {
public:
void bar() {
std::cout << "Hello world";
}
};
在我的 Python 文件中,我使用以下命令调用:
from ctypes import cdll
lib = cdll.LoadLibary('./libfoo.1.dylib')
class Foo(object):
def __init__(self):
self.obj = lib.Foo_new()
def bar(self):
lib.Foo_bar(self.obj)
f = Foo()
f.bar()
我创建了一个 .dylib,因为我不相信在 Mac 上的 GCC 中创建共享库是可能的,但是,我可能是错的。我收到以下错误:
Traceback (most recent call last):
File "main.py", line 3, in <module>
lib = cdll.LoadLibary('./libfoo.1.dylib')
File
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py",
line 423, in __getattr__
dll = self._dlltype(name)
File
"/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/__init__.py",
line 353, in __init__
self._handle = _dlopen(self._name, mode)
OSError: dlopen(LoadLibary, 6): image not found
但是找到了,库(.dylib)实际上在同一个目录中。我哪里出错了?