Tôi hiện đang cố gắng sử dụng Boost Python để xuất một lớp và sau đó sử dụng nó trong chương trình tương ứng.Boost Python: Gặp sự cố khi nhập mô-đun
/**
main.cpp
*/
#define BOOST_PYTHON_STATIC_LIB
#include <Resource\ZipResourceFile.hpp>
#include <Resource\ResourceCache.hpp>
#include <Windows.h>
#include <boost/python.hpp>
#include <iostream>
/* a simple add method, for s & g's */
int add(int a, int b)
{
return a + b;
}
/* Foo class*/
class Foo
{
public:
Foo(int n);
~Foo();
void f();
};
/* Foo ctor, does nothingm just wanted to pass and arg */
Foo::Foo(int n)
{
}
/* destructor */
Foo::~Foo()
{
}
/* f() implementation, calls Foo!!! to cout */
void Foo::f()
{
std::cout << "Foo!!!" << '\n';
}
/* Boost python module definition */
BOOST_PYTHON_MODULE(PyBackend)
{
using namespace boost::python;
def("add", add);
class_<Foo>("Foo", init<int>())
.def("f", &Foo::f);
}
int main(int argc, char* argv[])
{
PyImport_AppendInittab("PyBackend", init_PyBackend);
Py_Initialize();
PyRun_SimpleString("import PyBackend");
PyRun_SimpleString("foo = PyBackend.Foo(1)");
Py_Finalize();
{
int n;
std::cin >> n;
}
return 0;
}
Dù sao, tôi không biết tôi có thể tìm hàm init_PyBackend ở đâu, mặc dù điều đó có vẻ hợp lý nếu tôi không sử dụng Boost.Python.
Mô-đun chính nó không nằm trong một DLL riêng biệt, nó được biên dịch tất cả cùng một lúc. Dù sao, bất cứ ai có bất kỳ ý tưởng về những gì tôi có thể làm gì?
Trong tương lai, vui lòng đặt bất kỳ mã/lỗi có liên quan nào bên trong thay vì liên kết đến trang web bên ngoài. – ildjarn
Được rồi, cảm ơn bạn! Tôi đã cố gắng để làm nổi bật tất cả rồi ctrl-k, nhưng nó không định dạng nó đúng. Làm thế nào bạn có được nó tất cả các định dạng độc đáo. – DubyaDubyaDubyaDot
Ctrl + K là cách tiếp cận đúng, nhưng nếu điều đó không hoạt động thì luôn có biểu tượng '{}' trên thanh công cụ. : -] Điều đó đang được nói, không rõ ràng với tôi câu hỏi của bạn là gì - tại sao phải quan tâm đến 'init_PyBackend'? Bạn đang gặp phải vấn đề gì? – ildjarn