2015-08-24 4 views
1

Я пытаюсь использовать буферы протокола google из Qt в Windows. Поэтому я собрал источники protobuf из github, используя msys из MingGW. Прото-компилятор (protoc), похоже, работает нормально, но, к сожалению, он не работает, чтобы использовать сгенерированные файлы .ph.h и .pb.cc из среды Qt.Буферы протокола Google с использованием MinGW в Windows

Добавлено это мой файл .pro:

LIBS += "C:/MinGW/msys/1.0/bin/libprotobuf-10.dll" 
INCLUDEPATH += "C:/MinGW/msys/1.0/include/" 

, но я все еще получаю «неопределенную ссылку на ...» на все используемое methodes класса, когда я пытаюсь скомпилировать его.

Код должен быть верным, так как он отлично работает на linux-машине, используя protoc и Qt. Это должно быть так, как я включаю .dll, или я включаю неправильный, так как заголовки, кажется, решают нормально. Выберите соответствующую DLL, чтобы включить в эту должность: http://www.ptrackapp.com/apclassys-notes/building-google-protocol/

Я немного потерял здесь и был бы признателен за любые удерживаемые.

Заранее спасибо.

+0

Вы разрабатываете MSYS? Зачем? Ничто из того, что вы намекаете, не имеет места в составе MSYS. Ваши собственные приложения должны ___never___ зависеть от любой DLL в 'C:/MinGW/msys/1.0/bin' и не использовать какой-либо заголовок в' C:/MinGW/msys/1.0/include'; эти каталоги зарезервированы для разработки самого MSYS. Возможно, вы намеревались ссылаться на каталоги 'C:/MinGW/include' и' C:/MinGW/bin'? –

+0

Чтобы использовать буферы протокола в Windows, я должен скомпилировать с помощью MinGW или Cygwin (https://github.com/google/protobuf, см. Раздел Windows). Но чтобы иметь возможность использовать полученные файлы ph.h и pb.cc в моем приложении Windows, мне нужны соответствующие заголовки и библиотеки, которые, очевидно, находятся в директории msys, где я ее скомпилировал. Я что-то пропустил, или как я могу использовать их без соответствующих заголовков и библиотек? – user3482407

+0

Вам что-то не хватает. Компиляция с MinGW, заголовки и библиотеки, которые вы используете ___must___, находятся в дереве 'C:/MinGW/{include, lib, bin}; вы должны использовать ___not___ компоненты в дереве 'C:/MinGW/msys/1.0', поскольку они являются частными для самого MSYS, а компиляторы MinGW не используют их. Либо вы неправильно установили свои собственные встроенные компоненты, либо пытаетесь использовать компоненты, которые не предназначены для вашего использования. В последнем случае вам нужно будет портировать любые отсутствующие компоненты самостоятельно. –

ответ

1

Finaly понял это, используя следующий префикс конфигурации:

./configure --prefix=`cd /mingw; pwd -W` 

Найдено решение here!

+0

Хорошая находка. Попробуйте запустить 'pwd -W' из командной строки (' msys.bat') и посмотреть, что вы получаете, если вам интересно. –

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