2010-02-08 3 views
1

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

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

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

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

+0

Является ли dll в том же каталоге с вашим исполняемым файлом? – Amirshk

+0

Да, это также в том же каталоге. – Karl

ответ

1

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

Попробуйте исследовать DLL с помощью соответствующего инструмента, чтобы просмотреть экспортировать таблицы и искать функции - таковой, если она есть (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), или ваш стек может быть неровным.