不应该存在的随机未解析的外部符号
Random unresolved external symbols that shouldn't be there
我习惯于为Linux编译,所以这个.lib的东西对我来说有点奇怪。在Visual Studio下的程序中,我不断为其他库甚至Microsoft运行时获得未解析的随机外部符号。
1>glfw3.lib(init.c.obj) : error LNK2019: unresolved external symbol __imp__vsnprintf referenced in function __glfwInputError
1>MSVCRTD.lib(vsnprintf.obj) : error LNK2001: unresolved external symbol __imp__vsnprintf
1>glfw3.lib(context.c.obj) : error LNK2019: unresolved external symbol __imp__sscanf referenced in function _parseVersionString
1>MSVCRTD.lib(vsnprintf.obj) : error LNK2001: unresolved external symbol __imp___vsnprintf
1>C:Program Files (x86)Microsoft Visual Studio 14.0VClibOLDNAMES.lib : warning LNK4272: library machine type 'UNKNOWN' conflicts with target machine type 'X86'
我只包括这些库,我可以确认它们正在被找到:
x86/glew32s.lib
x86/glfw3.lib
x86/glfw3dll.lib
opengl32.lib
具有继承的价值观:
kernel32.lib
user32.lib
gdi32.lib
winspool.lib
comdlg32.lib
我可以确认这是确切的订单。我试过安装和重新安装Windows7 SDK和Visual Studio,我也在Windows7上。
如有任何关于此问题的帮助,我们将不胜感激,如果需要,我很乐意提供更多信息。
谢谢,Boncey
您还可以向链接器输入添加一个附加库,即legacy_stdio_definitions.lib
转到"属性">"链接器">"输入"。
在AdditionalDependencies中添加上述库。
问题是您的glfw静态库是使用与您使用的Visual Studio版本不同的Visual Studio构建的。截至2015年春季,glfw.org上的预构建版本与Visual Studio 2015 RC(您似乎正在使用)不兼容。
幸运的是,GLFW是一个在许可证下发布的小型代码库,因此最简单的解决方案就是在您的解决方案中为其创建一个新项目。步骤如下:
- 在您的解决方案中创建一个新的空项目GLFW
- 复制
include
、deps/GL
,然后创建一个src
文件夹 - 将所有源文件复制到要支持的平台的
src
文件夹中。对于windows,这是带有win
或wgl
前缀或没有前缀的所有内容。你可以忽略所有cmake的东西 - 在
src
中创建一个名为glfw_config.h
的文件,其中包含_GLFW_WIN32
、_GLFW_WGL
和_GLFW_USE_OPENGL
中的#defines
。如果您想要支持的不仅仅是窗口,那么您必须有条件地在此文件中定义您想要的选项。src/glfw_config.h.in
中描述了所有选项 - 将所有相关文件添加到Visual Studio项目中
- 在项目选项中,将"配置类型"设置为static-lib。在"C/C++">"常规"下,确保"SDL检查"处于禁用状态。在"预处理器"下,将
_GLFW_USE_CONFIG_H
添加到定义中 - 将主项目设置为依赖于GLFW项目(在右键单击菜单中)。最后,将正确的GLFW-lib添加到链接器依赖项中。(我已经设置了GLFW的输出目录,所以正确的lib只是
$(SolutionDir)GLFW$(Platform)$(Configuration)glfw.lib
。)
看起来动态和静态运行库链接之间存在错误连接。符号上的"__imp"前缀表示您的代码正在从DLL中查找内容,但您链接的库可能需要静态运行库。
调出项目属性页(在"构建"->"属性"下),然后查找左侧的C++类别。在"代码生成"下应该有一个名为"运行库"的条目。这可能当前设置为多线程调试DLL(/MDd),因为它看起来像是在调试模式下编译。将其更改为"多线程调试"(/MTd),然后重新编译所有内容。看看现在是否有效。
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 未解析的外部符号_MsiLocateComponentW@12.
- 在C++中使用 gRPC 时未解析的外部符号
- LibPrivoxy: 未解析的外部符号 __declspec(dllimport) int __stdcall Sta
- 尝试从 XamlApplication 编译 C++/WinRT 空白应用程序时,我收到未解析的外部符号 winrt_make_*
- 我收到错误LNK2001:未解析的外部符号(C++代码)
- 可视抽象类 c++(错误 LNK 2001:未解析的外部符号)
- 如何摆脱C++中未解析的外部符号"private: static char"错误?
- 当 lib 已添加到其他依赖项时,如何在 VS 中调试未解析的外部符号错误
- 仅在少数方法(静态或共享库)中解析的外部符号
- 未解析的外部符号"__declspec(dllimport)与 Spdlog c++ 库
- 函数 _main (OPENGL C++) 中引用的未解析的外部符号 ________
- 错误LNK2019未解析的外部符号"public: __thiscall SLinkList<char>::SLinkList<char>(void)"
- 使用静态 constexpr 成员的未解析外部符号
- 引入参数化构造函数后显示 LNK 2019 未解析外部符号的代码错误
- Dlib LNK2001未解析的外部符号USER_ERROR__consistent_build_configurati
- 矛盾的未解决的外部符号+未使用的库与VS2017和FFMPEG 4
- 链接器错误:切换到unicode生成给出:未解析的外部符号WinMain
- 类模板上一个特定函数的未解析外部符号
- LNK2001:未解析的外部符号public:static类std::vector