创建一个C++;Python中使用.dylib的包装器 基本上我试图在Python中开发一个包装器,它可以访问我在C++中开发的一个库。目前,这是非常基本的,因为这只是为了测试目的

创建一个C++;Python中使用.dylib的包装器 基本上我试图在Python中开发一个包装器,它可以访问我在C++中开发的一个库。目前,这是非常基本的,因为这只是为了测试目的,c++,python,macos,wrapper,C++,Python,Macos,Wrapper,在我的.h文件中,我有以下内容: #include <iostream> class Foo { public: void bar() { std::cout << "Hello world"; } }; from ctypes import cdll lib = cdll.LoadLibary('./libfoo.1.dylib') class Foo(object): def __init__(self):

在我的.h文件中,我有以下内容:

#include <iostream>

class Foo {

  public:

    void bar() {
        std::cout << "Hello world";
    }
};
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
回溯(最近一次呼叫最后一次):
文件“main.py”,第3行,在
lib=cdll.LoadLibary('./libfoo.1.dylib')
文件
“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/_init__.py”,
第423行,in_uugetattr__
dll=self.\u dlltype(名称)
文件
“/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/ctypes/_init__.py”,
第353行,在_init中__
self.\u handle=\u dlopen(self.\u名称,模式)
OSError:dlopen(LoadLibrary,6):找不到映像

但是它被找到了,并且库(.dylib)实际上位于同一目录中。。我哪里出问题了?< /P> < P> >代码> cType < /Cult>库不知道C++,如果你想使用<代码> cType < /C> >,请在C中编写共享库。


你可以查看一些类似的东西,它可以链接到一个用C++编写的共享库。但是,如果库托管在服务器上会怎样?这可能吗?你是什么意思?举个例子。有很多方法可以进行RPC(远程过程调用),其中一种是python内置的,所有这些方法都意味着您需要一个类似SetupAnderson的服务器-客户机-谢谢您的回复。基本上,我在做raspberry pi,但是它不能处理我的请求(在C++中),所以我把库放到了一个外部服务器上,我只想创建一个与之交互的包装器。我主要关注的是C++中我使用的是<代码> STD::vector < /代码>,很明显,在Python中没有这样的东西…有没有办法避开这种情况?找不到库(或其依赖项之一)。首先尝试

os.path.isfile('./libfoo.1.dylib')