Страница 1 из 1

glut + dlltool

Добавлено: 31 янв 2016, 09:18
Сионист
Файл opengl32.a создаю так: файл opengl.def

Код: Выделить всё

LIBRARY opengl32.dll
EXPORTS
glClear
glFlush
glClearColor
, командная строка:

Код: Выделить всё

c:\CodeBlocks\MinGW64\bin\dlltool.exe -d C:\CodeBlocks\mingw64\lib\gl\opengl32.def -l C:\CodeBlocks\mingw64\lib\gl\opengl32.a
. All complete. Создаю glut32.a по аналогии: файл glut32.def

Код: Выделить всё

LIBRARY glut32.dll
EXPORTS
glutInitDisplayMode
, командная строка

Код: Выделить всё

c:\CodeBlocks\MinGW64\bin\dlltool.exe -d C:\CodeBlocks\mingw64\lib\gl\glut32.def -l C:\CodeBlocks\mingw64\lib\gl\glut32.a
, но
Запуск программы не возможен, так как на компьютере отсутствует glut32.dll
, копирование glut32.dll в каталог программы не помогает, всё равно вылазит ошибка, но уже 0xc000007b. А если:

Код: Выделить всё

LIBRARY glut32.dll
EXPORT
glutInitDisplayMode
, то
D:\Projects\cpp\simplegl\simplegl\simplegl.cpp|19|undefined reference to `glutInitDisplayMode'|
. Что я делаю не так?

Re: glut + dlltool

Добавлено: 31 янв 2016, 11:21
Romeo
1. А почему ты в одному случае пишешь EXPORTS, а в другом EXPORT?

2. Я никогда не работал с glut, но с ошибкой 0xc000007b MinGW сталкивался. Она вываливался, например, в рантайме, если из MinGW бинарника я пытался делать вызов функции из либки, которая была собрана студией. Дело в том, что у студии и у MinGW несовместимый ABI. Вызываться такой код будет только в том случае, если функция extern "C", так как С-шный ABI у всех современных компиляторов совместим в пределах одной платформы. Какое объявление у функции glutInitDisplayMode?