Neues VS 2005 CLR Projekt Problem



  • Hallo,

    Nach langer Zeit muss ich mal wieder einen Prototyp mit C++ implementieren. Da ich nur eine einfache GUI brauche und die mysql++ Bibliothek habe ich mich für ein CLR Projekt "Windows Forms Anwendung" entschieden.

    Nun habe ich diesem Projekt eine neue Klasse hinzugefügt um meine Datenbankverbindung zu verwalten. Die einzige Änderung ist im .h der neuen Klasse das Einbinden der mysql++ Bibliothek. Sieht also jetzt wie folgt aus

    #include <mysql++.h>
    
    #pragma once
    
    ref class MySQLDB
    {
    public:
    	MySQLDB(void);
    };
    

    Die Include Pfade für Compiler und Linker habe ich angepasst und mit einem einfachen win32 Projekt getestet. Die Pfade sind richtig und ich kann mysql+ verwenden.

    In meinem CLR Projekt gibt es aber trotzdem Probleme die ich nicht deuten kann. Auf den ersten Blick sieht es so aus als ob die Pfade zu den Bibliotheken falsch angegeben wären, aber das kann ich 100% ausschließen. Woran kann es liegen? Ich hoffe auf Eure Hilfe 😉

    Zunächst gibt es ca 150 Warnung alle ähnlich diesen:

    ------ Neues Erstellen gestartet: Projekt: MySQL Federate, Konfiguration: Debug Win32 ------
    Die Zwischen- und Ausgabedateien für das Projekt "MySQL Federate" mit der Konfiguration "Debug|Win32" werden gelöscht.
    Kompilieren...
    stdafx.cpp
    Kompilieren...
    MySQLDB.cpp
    c:\mysql\mysql++\lib\connection.h(116) : warning C4272: "mysqlpp::Connection::Connection": Ist als __declspec(dllimport) markiert. Beim Importieren einer Funktion muss eine systemeigene Aufrufkonvention angegeben werden.
    c:\mysql\mysql++\lib\connection.h(144) : warning C4272: "mysqlpp::Connection::Connection": Ist als __declspec(dllimport) markiert. Beim Importieren einer Funktion muss eine systemeigene Aufrufkonvention angegeben werden.
    c:\mysql\mysql++\lib\connection.h(151) : ...
    

    Und dann beim Linken geht es weiter...

    Ressourcen werden kompiliert...
    Verknüpfen...
    MySQLDB.obj : error LNK2028: Nicht aufgelöstes Token (0A00000D) ""public: virtual class mysqlpp::ColData_Tmpl<class mysqlpp::const_string> const __clrcall mysqlpp::Row::at(unsigned int)const " (?at@Row@mysqlpp@@$$FUBM?BV?$ColData_Tmpl@Vconst_string@mysqlpp@@@2@I@Z)", auf das in Funktion ""void __clrcall `dynamic initializer for 'const mysqlpp::Row::`vftable'{for `mysqlpp::const_subscript_container<class mysqlpp::Row,class mysqlpp::ColData_Tmpl<class mysqlpp::const_string>,class mysqlpp::ColData_Tmpl<class mysqlpp::const_string> const ,unsigned int,int>'}''(void)" (???__E??_7Row@mysqlpp@@6B?$const_subscript_container@VRow@mysqlpp@@V?$ColData_Tmpl@Vconst_string@mysqlpp@@@2@$$CBV32@IH@1@@@@YMXXZ@?A0x3ed0e04d@@$$FYMXXZ)" verwiesen wird.
    MySQLDB.obj : error LNK2028: Nicht aufgelöstes Token (0A00000E)...
    


  • Nach einigen Stunden konnte ich das Problem analog zu diesem Problem lösen: http://forums.oracle.com/forums/thread.jspa?messageID=1423094


Log in to reply