Каковы некоторые из возможных причин ошибки времени выполнения “точка входа не найдена”?

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

  •  19-09-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top