Форум: Форум C++Разное
Новые темы: 00
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум C++

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: снова mysql
 
 автор: AlMag   (05.08.2009 в 13:43)   письмо автору
 
 

всем привет.
мне в проэкте нужен мускул. скачал я его из
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   (06.08.2009 в 13:56)   письмо автору
 
   для: AlMag   (05.08.2009 в 13:43)
 

ну, знатоки? подскажите, в чем проблема

  Ответить  
 
 автор: GeorgeIV   (07.08.2009 в 10:25)   письмо автору
 
   для: AlMag   (05.08.2009 в 13:43)
 

Ее надо прицеплять при компиляции проекта

  Ответить  
 
 автор: AlMag   (07.08.2009 в 11:11)   письмо автору
 
   для: GeorgeIV   (07.08.2009 в 10:25)
 

там нет хедер файла. как её прицепить?
P. S. юзаю VS 2008

зачем libmysql.dll прицеплять, если у меня уже есть libmysql.lib?

  Ответить  
 
 автор: GeorgeIV   (09.08.2009 в 00:24)   письмо автору
 
   для: AlMag   (07.08.2009 в 11:11)
 

lib - это объявление функций, а dll - это их реализация. Это так, по рабоче-крестьянски.


К сожалению, у меня теперь нет возможности на работе работать с Си, поэтому все вопросы по Си будут по большей части теоретическими, без практической проверки.
Это для всех.

  Ответить  
 
 автор: AlMag   (09.08.2009 в 14:21)   письмо автору
 
   для: GeorgeIV   (09.08.2009 в 00:24)
 

а разве проэкт не увидит сам, что возле файла *.lib лежит еще и *.dll ?

  Ответить  
 
 автор: GeorgeIV   (10.08.2009 в 10:12)   письмо автору
 
   для: AlMag   (09.08.2009 в 14:21)
 

нет

  Ответить  
 
 автор: AlMag   (10.08.2009 в 21:22)   письмо автору
 
   для: 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

че-то я эту библиотеку не пойму

  Ответить  
 
 автор: GeorgeIV   (10.08.2009 в 22:10)   письмо автору
 
   для: AlMag   (10.08.2009 в 21:22)
 

Я с dev давно бросил работать, пользуюсь студией и исходниками библиотеки от Mysql. Проблем не возникало.

  Ответить  
 
 автор: AlMag   (16.08.2009 в 10:48)   письмо автору
 
   для: GeorgeIV   (10.08.2009 в 22:10)
 

мне бы хоть как-нибудь. где взять эти исходники

  Ответить  
 
 автор: exp   (17.08.2009 в 21:15)   письмо автору
 
   для: 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 в зависимости
, но это вызвало у меня ошибку
)

  Ответить  
 
 автор: exp   (17.08.2009 в 22:12)   письмо автору
 
   для: 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.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования