我正在使用FreeType库在Visual Studio 2015中编译程序。以前,我使用相同的项目使用库来编译带有我自己的Font类(以及许多其他东西)的静态库。一切都很顺利,全班都很棒。但是,我最近将项目更改为Windows应用程序,方法是将Properties
- > General
- > Configuration Type
更改为Application (.exe)
。这样,我可以同时编写程序并编辑代码,而无需复制所有20个文件。
在编写我的简单程序(与问题无关)并尝试重新编译之后,我遇到了许多我以前没有遇到过的错误。它们如下:
LNK2001未解析的外部符号__imp__strncpy [...] \ freetype.lib(ftbase.obj)
LNK2001未解析的外部符号__imp__fread [...] \ freetype.lib(ftsystem.obj)
LNK2001未解析的外部符号__imp__realloc [...] \ freetype.lib(ftsystem.obj)
LNK2001未解析的外部符号__imp__strstr [...] \ freetype.lib(truetype.obj)
LNK2001未解析的外部符号__except_handler4_common [...] \ MSVCRT.lib(_chandler4gs_.obj)
网上似乎没有任何关于这些的内容,更不用说这个特例了。当我编译为静态库时,一切都很顺利。之前我已经切换到编译.exe
,它也运行良好。我过去曾处理过未解决的外部问题,但这似乎无法解释。
我正在联系
#pragma comment(lib, "freetype.lib")
。 freetype.lib
存在且位于正确的目录中。
我包括:
#include <ft2build.h>
#include FT_FREETYPE_H
如果重要,我的程序是用C ++编写的,我也在和其他库连接。任何帮助表示赞赏。
答案 0 :(得分:6)
我找到了一个解决方案:according to this MSDN page,可以通过将msvcrt.lib
和msvcmrt.lib
添加到其他依赖项来解决一些未解析的外部问题。我试了一下,不知何故,它奏效了。我仍然对如何解决这个问题感到困惑。而且,坦率地说,我仍然不确定问题究竟是什么。如果有人能帮助我理解这一点,我们将不胜感激。
注意:强>
类似的问题可能是由链接配置标志中的错误匹配引起的。问题Resolving LNK4098: defaultlib 'MSVCRT' conflicts with提供了有关问题详情和解决方案的良好解释。
答案 1 :(得分:3)
我以为我的解决方案已经插入 - 运行时库设置不匹配(我正在使用/ MT而不是/ MD构建的lib链接。该设置在C / C ++中 - &gt;代码生成部分。)_
答案 2 :(得分:1)
我遇到了同样的问题。我通过在其他依赖项中添加mvcrt.lib
和msvcmrt.lib
并将/NODEFAULTLIB:LIBCMT
添加到链接器选项中的其他选项来解决此问题。