Du bist nicht angemeldet.

Werbeanzeige

1

20.12.2014, 15:31

C++ MySQL-Connector statisch in Bibliothek linken?

Hallo zusammen,

ich bin gerade dabei, eine Bibliothek für mein neues Projekt zu schreiben. In dieser Bibliothek benötige ich den c++ MySQL-Connector (als Library vorhanden).
Nun versuche ich meine eigene Bibliothek so zu erstellen, dass ich im späteren Projekt nicht beide Bibliotheken mit reinlinken muss, sondern nur die, die ich geschrieben hab. Leider wird natürlich der übliche Error (LNK2019 - Linker Error) geworfen, wenn ich versuche, das Projekt zu erstellen.

Gibt es die Möglichkeit, die Bibliothek so zu erstellen, dass mein Vorhaben erfolgreich sein wird? :D

LG Kyle

BlueCobold

Community-Fossil

Beiträge: 10 880

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

20.12.2014, 15:49

Das geht schon, sofern Du eine statische Bibliotheksversion vom Connector hast.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

20.12.2014, 16:13

Jup statische Version ist mit dabei und auch in der Befehlszeile mit drin .
Wie in der Anleitung beschrieben hab ich auch beim Präprozessor "CPPCONN_PUBLIC_FUNC=" gesetzt, damit es statisch klappt. Nur wenn ich jetzt versuch das Projekt zu kompilieren krieg ich immer noch nen Linkerfehler von den MySQL-Methoden.

BlueCobold

Community-Fossil

Beiträge: 10 880

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

20.12.2014, 16:23

Warte, warte, Du versuchst nicht das per normalem Visual Studio Link zu machen, oder? Das wird so nicht gehen, Du musst die Libs "manuell" mit dem "lib"-Tool mergen. Das ist ein Command-Line-Tool. Theoretisch geht das als post build step:
lib.exe /OUT:fat.lib your.lib mysql.lib
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

20.12.2014, 16:40

Haha ja das war meine erste Überlegung. Dann musste ich nur feststellen, dass es den Reiter 'Linker' garnicht gibt. Stattdessen habe ich bei 'Bibliothekar' die Lib hinzugefügt und die Befehlszeile sieht nun so aus:

Quellcode

1
/OUT:"C:\Users\danie_000\documents\visual studio 2013\Projects\Tycoon\Debug\Tycoon.lib" "mysqlcppconn-static.lib" /NOLOGO 

BlueCobold

Community-Fossil

Beiträge: 10 880

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

6

20.12.2014, 16:49

Das ist effektiv dasselbe, stimmt.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

7

20.12.2014, 17:46

Ok ich hab jetzt festgestellt, dass das Problem mit dem Linker Error unabhängig von meiner Lib ist. Ich hab versucht, es einfach direkt im Projekt mit einzubinden und ich kriege immer noch den Fehler:

Quellcode

1
Fehler  1   error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "_get_driver_instance" in Funktion "_wmain".  C:\Users\danie_000\documents\visual studio 2013\Projects\Tycoon\Tycoon_Web\main.obj Tycoon_Web



Nach längerem googlen habe ich rausgefunden, dass man zusätzlich zu der Connector-Lib noch libmysql.lib mit linken muss. Also bei Linker mit eingetragen => Fehler kommt trotzdem noch. Langsam weiß ich aber nicht mehr weiter ...

BlueCobold

Community-Fossil

Beiträge: 10 880

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

8

20.12.2014, 17:59

Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

9

20.12.2014, 18:13

Jo den Eintrag hab ich auch schon gefunden. Hab das define mit reingenommen, aber Ergebnis bleibt das gleiche.

Werbeanzeige