mirz Napisano Maj 6, 2008 Zgłoś Udostępnij Napisano Maj 6, 2008 Cześć wszystkim, O swoją drogą to fajnie, że coś ruszyła nasza scenka. Ale ja tutaj napiszę z bardzo poważnym problemem. O tóż mój problem dotyczy bardzo dobrego i niezawodnego narzędzia jakim jest Visual Studio 2008. No więc przechodząc do sedna sprawy mam taki problem ściągnąłem sobie mysql i do niego wszystkie potrzebne pliczki mysql.h etc. dodatkowo ściągnąłem libmysgl.def przekonwertowałem go na libmysgl.lib za pomocą liba napisałem krótką aplikację: #include "mysql/mysql.h" #pragma comment(lib, "libmysql.lib"); ... MYSQL *sock; sock = mysql_init(NULL); Program się ładnie kompiluje ale przy uruchomieniu wywala mi błąd, że nie może odnaleźć mysql_init@4, w LIBMYSQL.dll no fajnie zerknąłem sobie jak mam zdefiniowaną funkcję: MYSQL * STDCALL mysql_init(MYSQL *mysql); I lipa STDCALL powodóje dodanie upiększaczy w stylu @4 @8 etc. zalezy ile bajtów mają argumenty przekazywane do funkcji. Nie mogę użyć cdecl bo będę mieć kochany problem ze stosem i się aplikacja po drodze wykolei. Dodam, że pod dev cpp wszystko działa ok jeżeli dodasz -lmysql i nie masz żadnych problemów z upiększaczami. Wiem, że można usunąć @ grzebiąc w pliku ale potrzebuję żeby mi się ładnie program kompilował z nazwą jaką chce. Dodatkowo nie mogę zmienić nazw funkcji w dll ponieważ nie jestem jej twórcą a ona należy do Sun Microsystem więc ta droga odpada. Pozostaje jeszcze przez LoadLibrary i GetProcessAddress ale za dużo mam tych funkcji do użycia... Więc jeżeli ktoś ma jakieś pomysły to proszę pisać. Pozdrawiam mirz Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
OTx Napisano Maj 6, 2008 Zgłoś Udostępnij Napisano Maj 6, 2008 A to nie chodzi o to ze w opcjach projektu masz ustawione Unicode a nie Multi-Byte? Ja tak mam z wxWidgets Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Bartosz Wójcik Napisano Maj 6, 2008 Zgłoś Udostępnij Napisano Maj 6, 2008 Ja strzelam, że masz projekt w C++, a te liby od MySQL-a są w C napisane i sie kłóci konwencja, spróbuj dodać do tych headerów z MySQL extern "C" #ifdef __cplusplus extern "C" { #endif DWORD __stdcall Procka(DWORD Parametr); #ifdef __cplusplus } // extern "C" #endif głowy nie daje... Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
mirz Napisano Maj 7, 2008 Autor Zgłoś Udostępnij Napisano Maj 7, 2008 Siemka, Biblioteka jest napisana w C a program pisze w C++, extern "C" jest standardowo dodany do pliku mysql.h ale to i tak nic nie zmienia w Visualu uparcie dodaje tą swoją dekorację: #ifdef __cplusplus extern "C" { #endif #ifndef _global_h /* If not standard header */ #include #ifdef __LCC__ #include /* For windows */ No cóż napiszę sobie metodę która będzie ładować adresy funkcji które będą mi potrzebne. Próbowałem użyć mysql++.h ale taki sam rezultat. OT - unicode mam wyłączony standardowo ustawiam na Multi-Byte... Pozdrawiam mirz Cytuj Link do komentarza Udostępnij na innych stronach More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.