使用mingw对魔鬼功能的未定义引用
Undefined references to DevIL functions using MinGW
我在c 链接,静态与动态,.lib vs .a等方面的经验不太经验。
请注意下面的所有魔鬼库(魔鬼,伊卢,ilut)都有-l。至于库文件,我将dll放在system32和syswow64中,以及mingw lib中的.libs。Eclipse项目的"当前工具链"确实是MingW GCC。该项目只有1个源文件facecube.cpp(具有main())。我想念什么?
包括:
#include "Angel.h"
#include <ILconfig.h>
#include <ILilut_config.h>
#include <ILil.h>
#include <ILilu.h>
#include <ILilut.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:UsersBrentDesktop6631AdvGraphics4631_HW4_brent_barreinclude/IL/ilut.h:333:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
C:UsersBrentDesktop6631AdvGraphics4631_HW4_brent_barreinclude/IL/ilut.h:334:0: warning: ignoring #pragma warning [-Wunknown-pragmas]
C:UsersBrentDesktop6631AdvGraphics4631_HW4_brent_barreinclude/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:UsersBrentDesktopangel_codeinclude/Angel.h:75:0,
from ..facecube.cpp:6:
C:UsersBrentDesktopangel_codeinclude/CheckError.h: At global scope:
C:UsersBrentDesktopangel_codeinclude/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:UsersBrentDesktopangel_codeinclude/Angel.h:75:0,
from ..CommonInitShader.cpp:2:
C:UsersBrentDesktopangel_codeinclude/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)
从上方忽略的Pragma警告的代码(似乎与我无关):
333 #pragma warning(push)
334 #pragma warning(disable : 4115) // Disables 'named type definition in parentheses' warning
...
356 #pragma warning(pop)
看起来您正在混合32位和64位模块。具体来说,当我编译32位程序但链接到64位魔鬼库时,我可以遇到相同的问题。
确保您已经下载并链接到Devil-SDK-X86-1.7.8 SDK(http://downloads.sourceforge.net/project/project/openil/devil windows sdk/120sdk/1.7.7.8/devilil-sdk-x86-1.7.8.8.zip)。您还应该确保使用相应SDK的标题,尽管这可能不太关键。
相关文章:
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- 使用mysql c++连接器的未定义引用
- 对 Scalar ::Scalar() 的未定义引用
- 对复制 CTOR 和 CTOR 的未定义引用
- 对显式实例化的模板函数的未定义引用
- TensorRT (C++ API) 对"createNvOnnxParser_INTERNAL"的未定义引用
- 2个模板化类的非模板友元函数未定义引用错误
- 编译 libfluid 样本控制器时对"event_base_del_virtual"的未定义引用
- 获取对function_name的未定义引用
- 对 'std::thread::_M_start_thread CMake 的未定义引用进行基准测试
- 对结构方法的未定义引用
- 使用内联函数 c++ 的未定义引用
- 对 CMake 中'cudaRegisterLinkedBinary'链接错误的未定义引用?
- 对 DLOPEN 的未定义引用
- QT C++中对全局变量的未定义引用
- 快速数学导致对"__pow_finite"的未定义引用
- 对 boost::system::d etail::system_category_instance 的未定义引用,从
- OpenCV 3.4.3 中对 'cv::String::d eallocate()' 错误的未定义引用