2016-09-20 6 views
2

Я пытаюсь использовать последнюю версию PicklingTools (http://www.picklingtools.com/) с QT Creator. Я просто хочу открыть файл с маринованным образцом, который я загрузил вместе с файлами PicklingTools. Так что мой файл main.cpp выглядит очень простым:Использование PicklingTools с QT Creator

#include <iostream> 
#include "chooseser.h" 

using namespace std; 

int main() 
{ 
    Val result; 
    LoadValFromFile("../PicklingTools163Release/C++/SamplePickles/p7.pkl",result,SERIALIZE_P0); 
    return 0; 
} 

я редактировал файл .pro следующим образом:

TEMPLATE = app 
CONFIG += console c++11 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += main.cpp \ 

INCLUDEPATH += ../PicklingTools163Release/C++/ 
INCLUDEPATH += ../PicklingTools163Release/C++/opencontainers_1_8_4/include/ 

LIBS += -pthread 

HEADERS += \ 
    ../PicklingTools163Release/C++/chooseser.h \ 

QMAKE_CXXFLAGS += -std=c++0x -pthread 
QMAKE_CXXFLAGS += -fno-strict-aliasing -DLINUX_ -DOC_NEW_STYLE_INCLUDES -Wno-deprecated -I../PicklingTools163Release/C++/opencontainers_1_8_4/include -I../PicklingTools163Release/C++ -pthread -D_REENTRANT 

На данный момент я получаю несколько неопределенных эталонные ошибки:

- Fehler: undefined reference to `OC::CopyPrintableBufferToVector(char const*, unsigned long, char*, unsigned long)' 
- Fehler: undefined reference to `OC::P2TopLevelLoadVal(OC::Val&, char*)' 
- Fehler: undefined reference to `OC::OpalLoadSomeTable(OC::Val&, char*, bool, OC::MachineRep_e)' 
- Fehler: undefined reference to `OC::CopyPrintableBufferToVector(char const*, unsigned long, char*, unsigned long)' 
- Fehler: undefined reference to `OC::MakeVector(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned long, char const*, unsigned long)' 

Я предполагаю, что мне нужно отредактировать файл .pro, но прямо сейчас я понятия не имею, как это сделать.

ответ

1

Код OpenContainers работает ТОЛЬКО ВКЛЮЧЕНЫ, т. Е. Вам не нужно ссылаться ни на что, чтобы использовать JUST код OpenContainers (OC :: Val, OC :: Tab и т. Д.). НО!

Чтобы использовать любой код травления (например, неопределенные записи, которые вы видите для P2TopLevelLoadVal, MakeVector и т. Д.), Вам нужно создать и связать с библиотекой ptools. Эта библиотека содержит весь код травления Python.

% cd /home/me/PicklingTools163Release/C++ 
% make -f Makefile.Linux libptools.so 
# .... builds a lot of files, and put them into libptools.so .... 
# Update your Makefile to link against libptools.so 

Надеюсь, что это поможет. Ссылка на libptools.so в вашем файле Makefile.

+0

Я смотрел именно так! спасибо –

Смежные вопросы