|
|
|
| всем привет.
мне в проэкте нужен мускул. скачал я его из
http://dev.mysql.com/downloads/connector/c/6.0.html
и
http://tangentsoft.net/mysql++/
распаковал, все как поолжено.
тепер в программе только написал
#include <C:/mysql++/3.0.9/include/mysql++.h>
#pragma comment(lib, "C:\\MySQL++\\3.0.9\\lib\\libmysql.lib");
#pragma comment(lib, "C:\\MySQL++\\3.0.9\\lib\\mysqlclient.lib");
using namespace mysqlpp;
mysqlpp::Connection conn(false);
int main()
{
conn.connect("tmp", "localhost", login, pass);
return 0;
}
|
и, естественно, выдает ошибки. при чем из библиотек
main.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall mysqlpp::Connection::Connection(bool)" (__imp_??0Connection@mysqlpp@@QAE@_N@Z) referenced in function "void __cdecl `dynamic initializer for 'conn''(void)" (??__Econn@@YAXXZ)
|
и еще 6 таких же.
в папке c:\mysql++\3.0.9\include\lib лежит еще libmysql.dll
может, с ней что-то надо сделать? | |
|
|
|
|
|
|
|
для: AlMag
(05.08.2009 в 13:43)
| | ну, знатоки? подскажите, в чем проблема | |
|
|
|
|
|
|
|
для: AlMag
(05.08.2009 в 13:43)
| | Ее надо прицеплять при компиляции проекта | |
|
|
|
|
|
|
|
для: GeorgeIV
(07.08.2009 в 10:25)
| | там нет хедер файла. как её прицепить?
P. S. юзаю VS 2008
зачем libmysql.dll прицеплять, если у меня уже есть libmysql.lib? | |
|
|
|
|
|
|
|
для: AlMag
(07.08.2009 в 11:11)
| | lib - это объявление функций, а dll - это их реализация. Это так, по рабоче-крестьянски.
К сожалению, у меня теперь нет возможности на работе работать с Си, поэтому все вопросы по Си будут по большей части теоретическими, без практической проверки.
Это для всех. | |
|
|
|
|
|
|
|
для: GeorgeIV
(09.08.2009 в 00:24)
| | а разве проэкт не увидит сам, что возле файла *.lib лежит еще и *.dll ? | |
|
|
|
|
|
|
|
для: AlMag
(09.08.2009 в 14:21)
| | нет | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.08.2009 в 10:12)
| | ну вот, теперь
LINK : warning LNK4199: /DELAYLOAD:C:\MySQL++\3.0.9\lib\libmysql.dll ignored; no imports found from C:\MySQL++\3.0.9\lib\libmysql.dll
|
че-то я эту библиотеку не пойму | |
|
|
|
|
|
|
|
для: AlMag
(10.08.2009 в 21:22)
| | Я с dev давно бросил работать, пользуюсь студией и исходниками библиотеки от Mysql. Проблем не возникало. | |
|
|
|
|
|
|
|
для: GeorgeIV
(10.08.2009 в 22:10)
| | мне бы хоть как-нибудь. где взять эти исходники | |
|
|
|
|
|
|
|
для: AlMag
(16.08.2009 в 10:48)
| | Имеются ввиду папки include и lib (libmysql.dll тоже прилагается в папке .lib-файлов)
из дистрибутива MySQL
только необходимое оттуда ~2M в хорошо сжатом состоянии
чтобы использовать, в свойствах проекта
-> C/C++ -> Общие -> Дополнительные каталоги включения -
добавляете эту папку include
-> Компоновщик -> Общие-> Дополнительные каталоги библиотек -
добавляете эту папку lib (я из lib убрал всё лишнее оставив только .lib файлы)
-> Компоновщик -> Ввод -> Дополнительные зависимости -
вписываете строку
libmysql.lib
пробуете скомпилировать пример из соседней темы #include <my_global.h>
#include <mysql.h>
int main(int argc, char *argv[])
{
// Дескриптор соединения
MYSQL *conn;
// Получаем дескриптор соединения
conn = mysql_init(NULL);
if(conn == NULL)
{
// Если дескриптор не получен - выводим сообщение об ошибке
fprintf(stderr, "Error: can't create MySQL-descriptor\n");
exit(1);
}
// Подключаемся к серверу
if(!mysql_real_connect(conn,
NULL,"root",NULL,NULL,NULL,NULL,
0
))
{
// Если нет возможности установить соединение с сервером
// базы данных выводим сообщение об ошибке
fprintf(stderr,
"Error: can't connect to database %s\n",
mysql_error(conn));
}
else
{
// Если соединение успешно установлено выводим фразу - "Success!"
fprintf(stdout, "Success!\n");
}
mysql_close(conn);
}
|
кладёте рядом с полученным exe файл libmysql.dll , запускаете
(описание всего того что выше, с картинками, есть в документации к mysql5.1
//upd
там было ещё что-то про вписывание mysqlcppconn-static.lib в зависимости
, но это вызвало у меня ошибку
) | |
|
|
|
|
|
|
|
для: AlMag
(16.08.2009 в 10:48)
| | Непроверял, и слабо понимаю по английски, но возможно чтобы вписать mysqlcppconn-static.lib в зависимости
предлагается ещё вписать строку ниже имеющихся
CPPCONN_PUBLIC_FUNC=
там где
-> C/C++ -> Препроцессор -> Определения препроцессора
3 By default CPPCONN_PUBLIC_FUNC is defined to declare functions to be compatible
with an application that calls a DLL. If building an application to call the static library,
you must ensure that function prototypes are compatible with this.
In this case CPPCONN_PUBLIC_FUNC needs to be defined to be an empty string,
so that functions are declared with the correct prototype.
In the Project, Properties tree view, under C++, Preprocessor
, enter CPPCONN_PUBLIC_FUNC= into the Preprocessor Definitions text field.
Note
Make sure you enter CPPCONN_PUBLIC_FUNC= and not CPPCONN_PUBLIC_FUNC,
as it needs to be defined as an empty string.
И дальше ещё какие-то записи
If building an application to use the MySQL Connector/C++ dynamically linked library carry out these steps:
Under Linker, Input, add mysqlcppconn.lib into the Additional Dependencies text field.
The application will need to access the MySQL Connector/C++ Dynamic Linked Library at run time.
Therefore, mysqlcppconn.dll needs to be in the same directory as the application executable,
or somewhere on the system's path.
Copy mysqlcppconn.dll to the same directory as the application
. Alternatively, extend the PATH environment variable using SET PATH=%PATH%;C:\path\to\cpp.
Alternatively, you can copy mysqlcppconn.dll to the Windows installation Directory, typically c:\windows. | |
|
|
|