我想要在一个名为foo.cpp的文件中与之对话的简单C++示例类
#include <iostream>由于ctype只能与C函数对话,因此您需要提供那些将它们声明为外部"C“的函数。
extern "C" {
Foo* Foo_new(){ return new Foo(); }
void Foo_bar(Foo* foo){ foo->bar(); }
}
class Foo{
public:
void bar(){
std::cout << "Hello" << std::endl;
}
};将此代码编译为共享库
g++ -c -fPIC foo.cpp -o foo.o
g++ -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o最后,我编写了python包装器。
从ctype import cdll lib = cdll.LoadLibrary('./libfoo.so')
class Foo(object):
def __init__(self):
self.obj = lib.Foo_new()
def bar(self):
lib.Foo_bar(self.obj)
f = Foo()
f.bar() #prints "Hello" on the screen“我的主要意图是在eclipse中编译C++代码,并在Linux中调用python中的C++函数”。当我在Linux中编译C++代码并从Linux中的python调用C++方法时,这个方法工作得很好。但是,如果我在eclipse中编译C++代码,并在Linux中调用python中的C++方法,它就不能工作。
Error message:
symbol not found我是eclipse工具链的新手,但是我给出了编译器选项和链接选项,如下所示
g++ -c -fPIC foo.cpp -o foo.o g++ -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o
将非常感谢eclipse编译器选项和链接选项快照。请帮我解决这个问题。提前感谢
发布于 2015-09-12 21:33:10
您需要在Eclipse中创建两个项目。
使用现有代码的
全部:
g++ -c -fPIC foo.cpp -o foo.o
g++ -shared -W1,-soname,libfoo.so -o libfoo.so foo.o
干净:
rm -f libfoo.so
然后,您必须在"Make Target“窗口中为该项目创建规则("all”和"clean")。如果你没有看到这个窗口,你必须执行 window ->Show view->Make Target。因此,当双击"Make target“视图中的"all”规则时,您可以使用Eclipse创建libfoo.so文件。
请看一些图片。


https://stackoverflow.com/questions/32341947
复制相似问题