Форум программистов, компьютерный форум CyberForum.ru

soci windows - C++

Восстановить пароль Регистрация
 
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.07.2012, 02:04     soci windows #1
C++
1
2
3
4
5
6
7
8
9
#include <soci.h>
#include <postgresql/soci-postgresql.h>
#include <iostream>
#include <string>
 
int main()
{
    soci::session sql;
}
Вот такой код, получаю ошибку линковки наподобие этой Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall soci::session::session(void)" (??0session@soci@@QAE@XZ) в функции _main C:\Users\ForEveR\Documents\Visual Studio 11\Projects\Inter\Inter\Inter.obj Inter

soci установлена в папку C:/Libs/Soci в каталоге lib лежат либы libsoci_core_3_1.lib и libsoci_postgresql_3_1.lib так же есть папка Debug в которой лежит тоже самое плюс другие файлы. В VS в каталогах библиотек добавлено C:\Libs\Soci\lib C:\Libs\Soci\lib\Debug. Вообщем я не могу понять в чем проблема, разве нужна #pragma чтобы указать какую либу юзать? Как тогда буст линкуется спокойно?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.07.2012, 02:04     soci windows
Посмотрите здесь:

C++ Программировани Shell для Windows (замена Windows Explorer)
Что выбирать для дальнейшего изучения Windows 7 c Win32 или Windows 8 c WinRt? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
12.07.2012, 02:14     soci windows #2
я бы /VERBOSE указал http://msdn.microsoft.com/en-us/libr...(v=vs.80).aspx
во всяком случае увидишь пытается ли он ее прилинковать

через dumpbin проверил, что в библиотеке такой символ есть http://msdn.microsoft.com/ru-ru/library/c1h23y6c

да и вообще, если это класс, то ессно должно быть собрано тем же компилятором итп

Добавлено через 48 секунд
Цитата Сообщение от ForEveR Посмотреть сообщение
Вообщем я не могу понять в чем проблема, разве нужна #pragma чтобы указать какую либу юзать? Как тогда буст линкуется спокойно?
а с прагмой работает?
значит все же в конфигурации проекта проблемы

Добавлено через 44 секунды
Цитата Сообщение от ForEveR Посмотреть сообщение
Как тогда буст линкуется спокойно
буст по хитрому к студии подключается, там своя история
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.07.2012, 03:56  [ТС]     soci windows #3
Лог...

1>------ Построение начато: проект: Inter, Конфигурация: Debug Win32 ------
1>
1> Поиск библиотек
1> Поиск C:\Libs\Soci\lib\libsoci_core_3_1.lib:
1> Поиск C:\Libs\Soci\lib\libsoci_postgresql_3_1.lib:
1> Поиск C:\Program Files\PostgreSQL\9.1\lib\libpq.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\msvcprtd.lib:
1> Поиск C:\Boost\lib\libboost_regex-vc110-mt-gd-1_49.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\MSVCRTD.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\OLDNAMES.lib:
1> Поиск C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\kernel32.lib:
1> Поиск C:\Libs\Soci\lib\libsoci_core_3_1.lib:
1> Поиск C:\Libs\Soci\lib\libsoci_postgresql_3_1.lib:
1> Поиск C:\Program Files\PostgreSQL\9.1\lib\libpq.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\msvcprtd.lib:
1> Поиск C:\Boost\lib\libboost_regex-vc110-mt-gd-1_49.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\MSVCRTD.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\OLDNAMES.lib:
1>
1> Поиск библиотек завершен
1>
1> Поиск библиотек
1> Поиск C:\Libs\Soci\lib\libsoci_core_3_1.lib:
1> Поиск C:\Libs\Soci\lib\libsoci_postgresql_3_1.lib:
1> Поиск C:\Program Files\PostgreSQL\9.1\lib\libpq.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\msvcprtd.lib:
1> Поиск C:\Boost\lib\libboost_regex-vc110-mt-gd-1_49.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\MSVCRTD.lib:
1> Поиск C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\lib\OLDNAMES.lib:
1> Поиск C:\Program Files (x86)\Windows Kits\8.0\lib\win8\um\x86\kernel32.lib:
1>
1> Поиск библиотек завершен
1>Inter.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall soci::session::session(void)" (??0session@soci@@QAE@XZ) в функции _main
1>Inter.obj : error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall soci::session::~session(void)" (??1session@soci@@QAE@XZ) в функции _main
1>C:\Users\ForEveR\Documents\Visual Studio 11\Projects\Inter\Debug\Inter.exe : fatal error LNK1120: неразрешенных внешних элементов: 2
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
12.07.2012, 04:04     soci windows #4
Цитата Сообщение от ForEveR Посмотреть сообщение
В VS в каталогах библиотек добавлено C:\Libs\Soci\lib C:\Libs\Soci\lib\Debug.
так а в список используемых либ? (те это выглядит очевидным, но..)
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.07.2012, 04:12  [ТС]     soci windows #5
alex_x_x, Компоновщик -> Ввод -> Дополнительные зависимости libsoci_core_3_1.lib;libsoci_postgresql_3_1.lib;libpq.lib;
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
12.07.2012, 04:19     soci windows #6
похоже на правду
так собственно
Цитата Сообщение от alex_x_x Посмотреть сообщение
а с прагмой работает?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.07.2012, 04:51  [ТС]     soci windows #7
alex_x_x, И с прагмой тоже нет.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
12.07.2012, 04:53     soci windows #8
ForEveR, тогда
Цитата Сообщение от alex_x_x Посмотреть сообщение
через dumpbin проверил, что в библиотеке такой символ есть http://msdn.microsoft.com/ru-ru/library/c1h23y6c
символы должны совпадать
если не совпадают, значит скомпилено для другого компилятора (несовместимость на уровне статических библиотек не лечится), либо там нет такого конструктора
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
12.07.2012, 05:42  [ТС]     soci windows #9
Требует Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "public: __thiscall soci::session::session(void)" (??0session@soci@@QAE@XZ) в функции _main C:\Users\ForEveR\Documents\Visual Studio 11\Projects\Inter\Inter\Inter.obj Inter

вывод:

424A 00000000 UNDEF notype () External | ??0session@soci@@QEAA@XZ (public: __cdecl soci::session::session(void))
424B 00000000 UNDEF notype () External | ??1session@soci@@QEAA@XZ (public: __cdecl soci::session::~session(void))
61F 00000000 SECTA1 notype () External | ??0session@soci@@QEAA@XZ (public: __cdecl soci::session::session(void))
624 00000690 SECTA1 notype () External | ??1session@soci@@QEAA@XZ (public: __cdecl soci::session::~session(void))
6A9 00000000 SECTA2 notype () Static | ?dtor$0@?0???0session@soci@@QEAA@XZ@4HA (int `public: __cdecl soci::session::session(void)'::`1'::dtor$0)
6AA 0000028C SECTA2 notype () Static | ?dtor$0@?0???1session@soci@@QEAA@XZ@4HA (int `public: __cdecl soci::session::~session(void)'::`1'::dtor$0)
6BE 00000027 SECTA2 notype () Static | ?dtor$1@?0???0session@soci@@QEAA@XZ@4HA (int `public: __cdecl soci::session::session(void)'::`1'::dtor$1)
6BF 000002B3 SECTA2 notype () Static | ?dtor$1@?0???1session@soci@@QEAA@XZ@4HA (int `public: __cdecl soci::session::~session(void)'::`1'::dtor$1)
6CA 000002DD SECTA2 notype () Static | ?dtor$2@?0???1session@soci@@QEAA@XZ@4HA (int `public: __cdecl soci::session::~session(void)'::`1'::dtor$2)
5D4 00000000 UNDEF notype () External | ??0session@soci@@QEAA@XZ (public: __cdecl soci::session::session(void))
5D5 00000000 UNDEF notype () External | ??1session@soci@@QEAA@XZ (public: __cdecl soci::session::~session(void))
Я так понимаю символы не совпадают?

Добавлено через 32 минуты
Хм. Отлично. soci была собрана под 64 бита, а приложение создано под 32. Шииикарно...
Собственно вопрос закрыт. Работает.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
12.07.2012, 13:38     soci windows #10
забавно, по-сути тоже вариант бинарной несовместимости)
наверно это можно было как-нибудь через dumpbin проверить, просто даже не пришло в голову
wiseman92
 Аватар для wiseman92
0 / 0 / 0
Регистрация: 09.07.2012
Сообщений: 34
13.07.2012, 12:11     soci windows #11
main же должен значение. Это тоже поправь.
alex_x_x
бжни
 Аватар для alex_x_x
2441 / 1646 / 84
Регистрация: 14.05.2009
Сообщений: 7,163
13.07.2012, 12:15     soci windows #12
Цитата Сообщение от wiseman92 Посмотреть сообщение
main же должен значение. Это тоже поправь.
должен в си, в цпп не должен
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.07.2012, 15:04     soci windows #13
wiseman92, а он и возвращает. По стандарту компилятор сам вставляет в конец функции main код, эквивалентный return 0;

alex_x_x, должен в любом случае, другое дело, что компилятор требует делать от нас, а что неявно делает сам.
Yandex
Объявления
17.07.2012, 15:04     soci windows
Ответ Создать тему
Опции темы

Текущее время: 10:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru