Каковы некоторые из возможных причин ошибки «точка входа не найдена» во время выполнения? - PullRequest
1 голос
/ 08 февраля 2010

Я пытаюсь скомпилировать программу, созданную из Visual Studio 8, преобразовать ее в Visual Studio 9. После предоставления всех необходимых каталогов .DLL, .lib и #include я успешно скомпилировал программу. Однако, когда я пытался запустить его, он всегда выдавал ошибку:

Не удалось найти точку входа в процедуру SwapBuffers в библиотеке динамических ссылок OpenGL32.DLL.

Я проверил свои каталоги. OpenGL32.DLL существует! Я даже загружаю OpenGL32.dll снова на тот случай, у меня старая версия; Нет, это не работает. Я даже пытался положить OpenGL32.dll прямо рядом со встроенным .exe. Нет, все равно выдает ту же ошибку.

Вы, кажется, знаете, каковы некоторые из возможных причин здесь?

1 Ответ

1 голос
/ 10 февраля 2010

Похоже, что SwapBuffers функций просто нет. Вы получаете предупреждение во время компиляции о неопределенных ссылках или о чем-то подобном?

Попробуйте изучить dll с помощью подходящего инструмента для просмотра таблиц экспорта и найдите функцию - se, если она есть (Google дал мне это: DLL Export Viewer )

Вы также можете попробовать загрузить его динамически следующим образом:

HMODULE lib = LoadLibraryA("OpenGL32.DLL");
FARPROC WINAPI proc = GetProcAddress(lib, "SwapBuffers");

if (!proc)
   printf("SwapBuffers() not found\n");

Будьте осторожны при непосредственном вызове указателя на функцию proc, не зная соглашения о вызовах, используемого в dll (вероятно, stdcall), иначе ваш стек может быть смещен.

...