Quali sono alcune delle possibili cause di “punto di ingresso non trovato” errore di runtime?
-
19-09-2019 - |
Domanda
Sto cercando di compilare un programma che viene creato da Visual Studio 8, convertito a Visual Studio 9. Dopo aver dato tutte le DLL, Lib, e le directory # include richieste, ho compilato con successo il programma. Tuttavia, quando ho provato a lanciarlo, è sempre dare fuori un errore:
Le SwapBuffers punto di ingresso di procedura non ha potuto essere situato nella dinamica Opengl32.dll libreria di collegamento.
ho controllato la mia directory. Opengl32.dll esiste! Ho anche scaricare Opengl32.dll di nuovo nel caso in cui, la mia è una vecchia versione; No, non funziona. Ho anche provato a mettere Opengl32.dll proprio accanto al exe costruito. No, dà ancora fuori lo stesso errore.
Ti sembrate sapere quali sono alcune delle possibili cause qui?
Soluzione
Sembra che funzioni SwapBuffers
semplicemente non c'è. Non si ottiene un messaggio di avviso in tempo di compilazione sui riferimenti non definiti o come?
Prova esplorare la dll con un adeguato strumento per visualizzare le tabelle di esportazione e cercare per la funzione - se se è lì (google mi ha dato questo: DLL Export Viewer )
Si potrebbe anche provare a caricarlo dinamicamente in questo modo:
HMODULE lib = LoadLibraryA("OpenGL32.DLL");
FARPROC WINAPI proc = GetProcAddress(lib, "SwapBuffers");
if (!proc)
printf("SwapBuffers() not found\n");
Fare attenzione a chiamare la proc
puntatore a funzione direttamente senza conoscere la convenzione di chiamata utilizzata nella DLL (probabilmente stdcall) o il tuo stack potrebbe ottenere malaligned.