2016-01-03 3 views
0

Я недавно решил попробовать PostgreSQL в качестве платформы базы данных для некоторых разработок на C++, над которыми я работаю. Я решил использовать libpqxx в качестве библиотеки подключений для своего проекта, и быстро понял, что это будет тяжелая битва, которая будет выполняться с VS 2015 на машине с Windows 10.Ссылка на libpqxx из Visual Studio 2015 в Windows 10

После долгих зубами скрежет и грызть ногти, я получил libpqxx скомпилировать на Windows, 10. Это оставляет мне следующую структуру каталогов

За документацию libpqxx, я также поместил копию libpq.dll в исполняемом каталоге моего проекта. Обратите внимание: я сделал это как для отладки, так и для выпуска сборок, попытался построить и то и другое, и получил тот же результат.

Все обучающие программы, которые я видел, как представляется, указывают на то, что библиотека может быть использована после ее компоновки и просто #including pqxx/pqxx, поэтому я создал небольшой проект, чтобы сделать именно это. Я получаю сообщение об ошибке:

fatal error C1083: Cannot open include file: 'pqxx/pqxx': No such file or directory

При попытке построить проект. Я также пробовал это, как отлаживать, так и выпускать сборки, но безрезультатно.

Вот screenshot моих настроек компоновщика.

Есть ли у кого-нибудь предложения по поводу того, как я могу связать и использовать эту библиотеку с Visual Studio 2015?

+1

Это ошибка компилятора, а не компоновщик. Вы не указали путь к включенным файлам. –

+0

Спасибо @SamiKuhmonen! Вы знаете, где в VS я бы это сделал или какую папку мне нужно включить? Я добавил путь к C: \ libpqxx \ lib в C \ C++ -> General-> Дополнительные каталоги Include, но, похоже, это не имеет значения. – TheFrog

+0

Вам нужна папка, содержащая заголовки. 'C: \ libpqxx \ lib' не является этой папкой. Есть ли 'C: \ libpqxx \ include'? В какой папке находится папка 'pqxx'? – drescherjm

ответ

1

Как указал Сами Кухмонен, на самом деле это не ошибка компоновщика, а ошибка компилятора. Мне нужно было включить фактический заголовок, который Visual Studio должен был найти. После добавления правильной папки (C: \ libpqxx \ include в моем случае) в настройку «дополнительных включенных каталогов» Visual Studio в C \ C++ -> General для предложения drescherjm, программа компилируется просто отлично.

Для справок: Я также столкнулся с нерешенными ошибками внешнего компоновщика после решения первоначальной проблемы. Это связано с тем, что вам также необходимо подключиться к ws2_32.lib и libpq.lib. Вам также нужно скопировать некоторые другие DLL-файлы, которые libpq также использует в вашей папке libpqxx lib. В моей системе я считаю, что это ssleay32.dll, libeay32.dll и libintl-8.dll. Эти файлы находятся под корнем установки PostgreSQL. Этап DLL упоминается в файле INSTALL.txt от libpqxx, однако я считаю, что он заявил, что библиотеки DLL находятся в одной папке, где я их нашел.

+0

Откуда вы взяли файлы 'ws2_32.lib' и' libpq.lib', и они просто заходят в папку libpqxx lib? – cogle

0

У меня также был такой же вопрос. Тогда я понял, что строю, мое приложение - 32-битное. Я изменил цель на x64 и успешно скомпилировался.

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