Tôi chạy vào các lỗi tương tự khi cố gắng sử dụng Boost.Python để truy cập gói python Anaconda từ C++. Hãy để tôi bắt đầu bằng cách nói rằng ấn tượng cá nhân của tôi về các thư viện C++ Boost là chúng là một ý tưởng tuyệt vời với tài liệu không đầy đủ. Có rất nhiều tài liệu trên boost.org, nhưng nó luôn luôn dường như để lại các chi tiết quan trọng mà các tác giả xuất hiện để xem xét quá tầm thường để bận tâm đề cập đến. Nhưng, hãy để tôi lấy hộp xà phòng của mình ...
Động lực đang diễn ra cho tôi [hy vọng, cuối cùng] tìm ra cách để Boost.Python hoạt động trên hệ thống của tôi là có rất nhiều gói khoa học Python tuyệt vời [ SymPy, Numpy, SciPy, matplotlib, vv] được bao gồm trong phân phối Anaconda và nó thực sự là tuyệt vời để truy cập chúng từ các dự án C++ được xây dựng với Qt Creator. Và các tài liệu Boost dường như cho thấy rằng Boost.Python là nghĩa vụ phải làm điều đó cho tôi. Than ôi, những tài liệu đó dường như để lại các chi tiết quan trọng mà các tác giả dường như xem xét quá tầm thường để bận tâm đến việc ...
Dù sao, ban đầu, tôi gặp lỗi xây dựng cho thấy không tìm thấy python.h. Tôi đã thoát khỏi điều đó bằng cách thêm hai câu lệnh này vào tệp .pro dự án Qt Creator của tôi, mà nói qmake nơi Boost cài đặt bao gồm các file và nơi Anaconda cài đặt tập tin python.h của nó trên hệ thống của tôi:
INCLUDEPATH += C:\boost_1_55_0
INCLUDEPATH += C:\Anaconda\include
Sau đó , Tôi nhận được một lỗi LNK1104 chỉ ra rằng 'python27.lib' không thể được tìm thấy. Tôi đã loại bỏ điều đó bằng cách thêm hai câu lệnh này vào tệp .pro của tôi. Việc đầu tiên nói với qmake nơi để tìm tập tin python27.lib của Anaconda. Cái thứ hai nói với qmake nơi để tìm tăng.python binary:
LIBS += "C:/Anaconda/libs"
LIBS += "C:/boost_1_55_0/stage/lib/libboost_python-vc110-mt-gd-1_55.lib"
Nhưng, đó là như xa như tôi đã nhận được cho đến nay. Bây giờ tôi nhận được một lỗi cho thấy nó không thể mở tập tin 'C: /Anaconda/libs.obj' mà tôi chưa tìm thấy một sửa chữa cho. Lỗi, tất nhiên, là do tập tin đó không tồn tại. Thách thức là để khám phá lý do tại sao nó đang được tìm kiếm và nơi để tìm thấy nó.
Bạn có ý gì khi "chạy mô-đun Python trong C++"? Để làm điều đó, bạn phải [nhúng một trình thông dịch Python] (http://docs.python.org/2/extending/embedding.html). Chỉ cần làm '#include' không làm điều đó. –
abarnert
Trong khi đó, bạn đã đọc [Xây dựng C và C++ Extensions trên Windows] (http://docs.python.org/2/extending/windows.html) và [Yêu cầu liên kết] (http://docs.python.org/ 2/extending/embedding.html # linking-requirements) (để nhúng)? Bạn có dự định nhúng thông dịch viên của bạn tĩnh hay động không? Bạn đã nhận được thông dịch viên bạn đang cố nhúng ở đâu? – abarnert
Có lẽ dễ dàng hơn khi xây dựng các thư viện Python từ mã nguồn Python. – Aya