Quali sono alcune delle possibili cause di “punto di ingresso non trovato” errore di runtime?

StackOverflow https://stackoverflow.com/questions/2220857

  •  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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top