newbie1992 Ответов: 1

Как сделать DLL-файл C++, который связывается с mysql api


здравствуйте и добрый день...
я пытаюсь создать dll-файл на c++ и связать его с mysql api

я уже ссылку lib и заголовочный MySQL для визуальной студии

когда я пытаюсь его построить..
я получил эти сообщения об ошибках :

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol _mysql_init@4 referenced in function "public: void __thiscall MySQLConnector::openConnection(void)" (?openConnection@MySQLConnector@@QAEXXZ)	MySQLConnectorDLL	C:\Users\user\Desktop\MySQLConnectorDLL\MySQLConnectorDLL\MySQLConnector.obj	1	

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol _mysql_real_connect@32 referenced in function "public: void __thiscall MySQLConnector::openConnection(void)" (?openConnection@MySQLConnector@@QAEXXZ)	MySQLConnectorDLL	C:\Users\user\Desktop\MySQLConnectorDLL\MySQLConnectorDLL\MySQLConnector.obj	1	

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK2019	unresolved external symbol _mysql_close@4 referenced in function "public: void __thiscall MySQLConnector::closeConnection(void)" (?closeConnection@MySQLConnector@@QAEXXZ)	MySQLConnectorDLL	C:\Users\user\Desktop\MySQLConnectorDLL\MySQLConnectorDLL\MySQLConnector.obj	1	

Severity	Code	Description	Project	File	Line	Suppression State
Error	LNK1120	3 unresolved externals	MySQLConnectorDLL	C:\Users\user\Desktop\MySQLConnectorDLL\Debug\MySQLConnectorDLL.dll	1	


Что я уже пробовал:

то, что я сделал в своем коде, это :

в моем заголовочном файле :
#pragma once

#include "mysql.h"

class MySQLConnector {
public :
	void openConnection();
	void closeConnection();
	bool connectionStatus();
private :
	bool _connectionStatus;
	MYSQL *_con, *_connectionString;
};


в моем файле cpp
#pragma once

#include "C:\BookScanner\extension\cpp files\header\CppMySQL.h"

#include <mysql.h>

void MySQLConnector::openConnection(){
	_con = mysql_init(NULL);
	_connectionString = mysql_real_connect(_con, "localhost", "root", "", "bookbardatabase", 3306, NULL, 0);

	_connectionStatus = _connectionString ? true: false;
}

void MySQLConnector::closeConnection()
{
	mysql_close(_con);
}

bool MySQLConnector::connectionStatus()
{
	return _connectionStatus;
}


и это мой dll-файл, я не смог его построить
#include "C:\BookScanner\extension\cpp files\header\CppMySQL.h"
#include "C:\BookScanner\extension\cpp files\cpp\CppMySQL.cpp"

MySQLConnector connector;

extern "C" __declspec(dllexport) void openConnection() {
	connector.openConnection();
}

extern "C" __declspec(dllexport) void closeConnection() {
	connector.closeConnection();
}

extern "C" __declspec(dllexport) bool connectionStatus() {
	return connector.connectionStatus();
}

Richard MacCutchan

Вы забыли включить библиотеку MySQL в процесс сборки.

1 Ответов

Рейтинг:
2

Jochen Arndt

Вы должны связать свою библиотеку DLL с библиотекой MySQL. Это можно сделать в настройках проекта или с помощью #pragma comment (lib, "filename") заявление (см. комментарий (C-C++)[^]). Это должно решить неразрешенные ошибки компоновщика внешних символов.

Вы также должны прочитать Пошаговое руководство: создание и использование библиотеки динамических ссылок (C++)[^] и реализуйте свой код в соответствии с этим.

Последнее замечание: никогда не включайте исходные файлы (*.с / *.СРР) с помощью #include заявления.


CPallini

5.