Неопределенные ссылки на функции DevIL с использованием MinGW

Я не очень опытен в связывании C ++, статических и динамических, .lib и .a и подобных.

Обратите внимание: у меня есть -l для всех библиотек DevIL (DevIL, ILU, ILUT). Что касается файлов библиотеки, я поместил DLL в System32 и SysWOW64, а .libs в MinGW \ lib. «Текущий набор инструментов» проекта Eclipse — это действительно MinGW GCC. Проект имеет только 1 исходный файл, facecube.cpp (имеет main ()). Что мне не хватает?

Включает в себя:

#include "Angel.h"#include <IL\config.h>
#include <IL\ilut_config.h>
#include <IL\il.h>
#include <IL\ilu.h>
#include <IL\ilut.h>
#include <iostream>
using namespace std;

Выход компилятора:

16:50:49 **** Rebuild of configuration Release for project TextureCube ****
Info: Internal Builder is used for build
g++ -DGLEW_STATIC "-IC:\\Users\\Brent\\Desktop\\angel_code\\include" "-IC:\\Users\\Brent\\Desktop\\6631AdvGraphics\\4631_HW4_brent_barre\\include" -O3 -Wall -c -fmessage-length=0 -o facecube.o "..\\facecube.cpp"In file included from ..\facecube.cpp:7:0:
C:\Users\Brent\Desktop\6631AdvGraphics\4631_HW4_brent_barre\include/IL/ilut.h:333:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
C:\Users\Brent\Desktop\6631AdvGraphics\4631_HW4_brent_barre\include/IL/ilut.h:334:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
C:\Users\Brent\Desktop\6631AdvGraphics\4631_HW4_brent_barre\include/IL/ilut.h:356:0: warning: ignoring #pragma warning  [-Wunknown-pragmas]
..\facecube.cpp: In function 'void quad(int, int, int, int)':
..\facecube.cpp:56:12: warning: unused variable 'colors' [-Wunused-variable]
..\facecube.cpp: In function 'void init()':
..\facecube.cpp:129:38: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
..\facecube.cpp:130:39: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings]
In file included from C:\Users\Brent\Desktop\angel_code\include/Angel.h:75:0,
from ..\facecube.cpp:6:
C:\Users\Brent\Desktop\angel_code\include/CheckError.h: At global scope:
C:\Users\Brent\Desktop\angel_code\include/CheckError.h:37:1: warning: 'void _CheckError(const char*, int)' defined but not used [-Wunused-function]
g++ -DGLEW_STATIC "-IC:\\Users\\Brent\\Desktop\\angel_code\\include" "-IC:\\Users\\Brent\\Desktop\\6631AdvGraphics\\4631_HW4_brent_barre\\include" -O3 -Wall -c -fmessage-length=0 -o "Common\\InitShader.o" "..\\Common\\InitShader.cpp"In file included from C:\Users\Brent\Desktop\angel_code\include/Angel.h:75:0,
from ..\Common\InitShader.cpp:2:
C:\Users\Brent\Desktop\angel_code\include/CheckError.h:37:1: warning: 'void _CheckError(const char*, int)' defined but not used [-Wunused-function]
g++ -o TextureCube.exe facecube.o "Common\\InitShader.o" -lfreeglut -lglew32 -lopengl32 -lwinmm -lgdi32 -lDevIL -lILU -lILUT
facecube.o:facecube.cpp:(.text+0x53f): undefined reference to `__imp__ilInit@0'
facecube.o:facecube.cpp:(.text+0x545): undefined reference to `__imp__iluInit@0'
facecube.o:facecube.cpp:(.text+0x54b): undefined reference to `__imp__ilutInit@0'
facecube.o:facecube.cpp:(.text+0x558): undefined reference to `__imp__ilutRenderer@4'
facecube.o:facecube.cpp:(.text+0x566): undefined reference to `__imp__ilutGLLoadImage@4'
collect2.exe: error: ld returned 1 exit status

16:50:50 Build Finished (took 1s.38ms)

Код для игнорируемых прагматических предупреждений сверху (кажется мне неуместным):

333 #pragma warning(push)
334 #pragma warning(disable : 4115)  // Disables 'named type definition in parentheses' warning
...
356 #pragma warning(pop)

1

Решение

Похоже, вы смешиваете 32-битные и 64-битные модули. В частности, я могу получить ту же проблему при компиляции 32-битной программы, но при подключении к 64-битным библиотекам DevIL.

Убедитесь, что вы загрузили и ссылаетесь на SDK DevIL-SDK-x86-1.7.8 (http://downloads.sourceforge.net/project/openil/DevIL%20Windows%20SDK/1.7.8/DevIL-SDK-x86-1.7.8.zip). Вы также должны убедиться, что вы используете заголовки из соответствующего SDK, хотя это может быть менее критично.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]