【发布时间】:2011-04-21 11:05:45
【问题描述】:
好的,事情就是这样。我有我需要的所有 IL 文件,即
DevIL.dll
DevIL.lib
ILU.dll
ILU.lib
ILUT.dll
ILUT.lib
config.h
config.h.in
devil_cpp_wrapper.h
devil_internal_exports.h
il.h
ilu.h
ilu_region.h
ilut.h
ilut_config.h
我的项目目录是这样的,假设我的项目名称是“Project1”
|-Debug---Project1.pdb
|
| |---Debug---[loads of files]
| |
| |---Glut---[OpenGL files]
| |
| |---IL---[all the files mentioned above]
|-Project1---|
| |---image.bmp
Project Folder---| |
| |---[header and .cpp files I made in the project]
| |
| |---[files produced by Visual Studio]
|
|-ipch---[unrelated stuff]
|
|-Project1.sln
|
|-[other files VS created]
如前所述,我已将所有 DevIL 文件放在 IL 文件夹中,并且我确信我正在使用它们的 unicode 兼容版本,因为我正在为项目使用 Unicode 字符集。在我的“其他依赖项”中,我有
ilut.lib; ilu.lib; DevIL.lib;
所以,存在依赖关系,我知道这不是问题。
毕竟,我仍然遇到链接器错误,主要是所有 IL 函数的 LNK2019:unresolved external symbol__imp_。
我错过了什么?在我看来,这可能与项目属性或文件本身有关......也许我错过了一个文件?
编辑:这是输出消息
1>------ Build started: Project: Final Year Project, Configuration: Debug Win32 ------
1>Build started 29/4/2011 12:46:04 pm.
1>InitializeBuildStatus:
1> Touching "Debug\Final Year Project.unsuccessfulbuild".
1>ClCompile:
1> Main.cpp
1>c:\users\xxxx\desktop\final year project 0.2\final year project\main.cpp(152): warning C4390: ';' : empty controlled statement found; is this the intent?
1>c:\users\xxxx\desktop\final year project 0.2\final year project\main.cpp(141): warning C4101: 'alpha' : unreferenced local variable
1>ManifestResourceCompile:
1> All outputs are up-to-date.
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilInit@0 referenced in function "public: static void __cdecl Main::Init(int,char * *)" (?Init@Main@@SAXHPAPAD@Z)
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilDeleteImages@8 referenced in function "public: static void __cdecl Main::DisplayScene(void)" (?DisplayScene@Main@@SAXXZ)
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilGetData@0 referenced in function "public: static void __cdecl Main::DisplayScene(void)" (?DisplayScene@Main@@SAXXZ)
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilConvertImage@8 referenced in function "public: static void __cdecl Main::DisplayScene(void)" (?DisplayScene@Main@@SAXXZ)
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilGetInteger@4 referenced in function "public: static void __cdecl Main::DisplayScene(void)" (?DisplayScene@Main@@SAXXZ)
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilLoadImage@4 referenced in function "public: static void __cdecl Main::DisplayScene(void)" (?DisplayScene@Main@@SAXXZ)
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilBindImage@4 referenced in function "public: static void __cdecl Main::DisplayScene(void)" (?DisplayScene@Main@@SAXXZ)
1>Main.obj : error LNK2019: unresolved external symbol __imp__ilGenImages@8 referenced in function "public: static void __cdecl Main::DisplayScene(void)" (?DisplayScene@Main@@SAXXZ)
1>C:\Users\xxxx\Desktop\Final Year Project 0.2\Debug\Final Year Project.exe : fatal error LNK1120: 8 unresolved externals
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:01.93
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
【问题讨论】:
-
这看起来应该可以。再次检查 UNICODE 的东西(你真的复制了正确的文件吗?项目是为 UNICODE 配置的吗?是否也定义了 _UNICODE 或只是 UNICODE?)。也许删除并重新下载每个 DevIL 文件,并确保将正确的版本复制到项目文件夹中。
-
我没有为Unicode定义任何东西,我只是去了,Project->Properties->Configuration Properties->General->Character Set->Use Unicode Character Set。
-
@OddCore:如果您将项目切换为使用 Unicode 字符串(通过属性表),MSVC 通常会定义 UNICODE 和 _UNICODE。只需检查 #ifndef _UNICODE #error ... 以确保不是问题所在。
-
不可能那么复杂...那些需要放在 Visual Studio 2010 目录中某个位置的文件呢?还是system32?我确定这就是问题所在,尽管我尝试了很多不同的方法......而且我有 3 个不同的路径,Visual Studio、Visual Studio 09 和 Visual Studio 10,更不用说 Microsoft SDK 和其他一些文件夹......
-
@OddCore:您不需要 Visual Studio 文件夹中的任何内容,也不需要 system32 文件夹中的任何内容。如果您进行完全重建并添加构建过程的完整输出(即包括所有错误的所有消息),这可能会有所帮助。猜猜可不是那么有趣,你知道的:)
标签: c++ static-libraries devil