gpt4 book ai didi

python - 在 Eclipse 中编译 C++ 方法并从 python 调用 C++ 方法时出现问题

转载 作者:太空狗 更新时间:2023-10-29 21:39:40 24 4
gpt4 key购买 nike

我想在名为 foo.cpp 的文件中与之交谈的简单 C++ 示例类

#include <iostream>

由于 ctypes 只能与 C 函数对话,因此您需要提供那些将它们声明为 extern "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 wrapper

从 ctypes 导入 cdlllib = 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.og++ -shared -Wl,-soname,libfoo.so -o libfoo.so foo.o

eclipse 编译器选项和链接选项的快照将受到高度赞赏。请帮我解决这个问题。提前致谢

最佳答案

您需要在 Eclipse 中创建两个项目。

  1. 具有现有代码的 Makefile 项目。 (File->New->Makefile project with existing code)。在此项目中,您必须指向您的 foo.cpp 文件。然后在项目文件夹中,您必须创建名称为“Makefile”的文件。 Makefile 必须包含以下行:

    全部:

    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” View 中的“all”规则时,您可以使用 Eclipse 创建 libfoo.so 文件。

  1. 此时您可以使用 foo.py 文件创建 PyDev 项目。如果你不知道 PyDev,你必须去 this site .它是 python 语言的 Eclipse 插件。当你安装了这个插件后,你就可以在 Eclipse 下使用你的 python 文件了。

查看一些图片。 enter image description here enter image description here

关于python - 在 Eclipse 中编译 C++ 方法并从 python 调用 C++ 方法时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32341947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com