Tôi đang cố gắng tạo ví dụ Boost.Python đầu tiên của mình.Cần trợ giúp để bắt đầu với Boost.Python
#include <iostream>
#include <boost/python.hpp>
using namespace boost::python;
class Hello {
public:
std::string greet() {
std::cout << "Hello World" << std::endl;
}
};
BOOST_PYTHON_MODULE(hello)
{
class_<Hello>("Hello")
.def("greet", &Hello::greet);
}
int main() {
std::cout << "Boost.Python Test" << std::endl;
Hello hello;
hello.greet();
return 0;
}
CHỈNH SỬA: Tiêu đề phát triển Python bị thiếu, như @cdhowie đã chỉ ra. Tôi đã tìm thấy và bao gồm các tệp tiêu đề bắt buộc. Bây giờ người liên kết đang khiếu nại:
10:43:58 **** Build of configuration BoostPythonTest-DPar for project BoostPythonTest
****
make all
Building file: ../src/BoostPythonTest.cpp
Invoking: GCC C++ Compiler
/usr/local/bin/g++-4.7 -I/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/include/python3.3m -I/usr/include -I/usr/local/Cellar/gcc/4.7.2/gcc/include/c++/4.7.2 -O0 -g3 -p -pg -Wall -c -fmessage-length=0 -std=c++11 -MMD -MP -MF"src/BoostPythonTest.d" -MT"src/BoostPythonTest.d" -o "src/BoostPythonTest.o" "../src/BoostPythonTest.cpp"
Finished building: ../src/BoostPythonTest.cpp
Building target: libBoostPythonTest-DPar.dylib
Invoking: MacOS X C++ Linker
/usr/local/bin/g++-4.7 -L/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config-3.3m -L/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Versions/3.3/lib -L/usr/local/Cellar/boost/1.51.0/lib -std=c++11 -Xlinker -ldl -framework CoreFoundation -lpython3.3m -dynamiclib -o "libBoostPythonTest-DPar.dylib" ./src/BoostPythonTest.o -lpython3.3m -lboost_python-mt -lpython3.3
Undefined symbols for architecture x86_64:
"boost::python::detail::init_module(PyModuleDef&, void (*)())", referenced from:
_PyInit_hello in BoostPythonTest.o
ld: symbol(s) not found for architecture x86_64
collect2: error: ld returned 1 exit status
make: *** [libBoostPythonTest-DPar.dylib] Error 1
Tôi đã liên kết với -lpython3.3m -lboost_python-mt -lpython3.3
- còn gì khác nữa?
EDIT: Tôi nghĩ rằng tôi đã liên kết với mọi thứ có danh sách python3.3-config
. Liên kết vẫn không hoạt động do thiếu biểu tượng.
Tôi tin rằng bạn đã chẩn đoán vấn đề chính xác. Tôi đang cố gắng để xây dựng Boost.Python chống lại Python 3.3. – clstaudt
Khi tôi cố gắng xây dựng Boost.Python tôi nhận được [lỗi sau] (https://gist.github.com/anonymous/5433641). 'gcc.link.dll ../../../../bin.v2/libs/python/build/gcc-4.2.1/debug/libboost_python.dylib ld: warning: không tìm thấy thư mục cho tùy chọn ' -L/usr/local/Cellar/python3/3.3.0/Frameworks/Python.framework/Phiên bản/3.3/lib/python3.3/config ' ld: tùy chọn không xác định: -R collect2: ld trả về 1 trạng thái thoát' Điều gì đang xảy ra ở đây? – clstaudt
@cls: Nếu bạn đang sử dụng phiên bản Apple của chuỗi công cụ GCC, sau đó thử chỉ định toolset là 'darwin' thay vì' gcc'. –