使用 FreeType 编译时未解决的外部问题
Unresolved Externals When Compiling With FreeType
我正在 Visual Studio 2015 年使用 FreeType 库编译一个程序。之前,我曾使用同一个项目用我自己的 Font class (以及许多其他东西)编译静态库,使用库。一切都很好,class 工作得很好。但是,我最近将项目更改为 Windows 应用程序,将 Properties
->General
->Configuration Type
更改为 Application (.exe)
。这样一来,我可以同时编写程序和编辑代码,而无需复制所有 20 多个文件。
写完我的简单程序(与问题无关),并尝试重新编译,我得到了很多以前没有得到的错误。它们如下:
LNK2001 unresolved external symbol __imp__strncpy [...]\freetype.lib(ftbase.obj)
LNK2001 unresolved external symbol __imp__fread [...]\freetype.lib(ftsystem.obj)
LNK2001 unresolved external symbol __imp__realloc [...]\freetype.lib(ftsystem.obj)
LNK2001 unresolved external symbol __imp__strstr [...]\freetype.lib(truetype.obj)
LNK2001 unresolved external symbol __except_handler4_common [...]\MSVCRT.lib(_chandler4gs_.obj)
网上关于这些的资料似乎很少,更不用说这个特殊案例了。当我编译为静态库时一切都很好。我之前已经切换到编译一个 .exe
,而且它也工作得很好。我过去处理过未解决的外部问题,但这似乎莫名其妙。
我正在链接
#pragma comment(lib, "freetype.lib")
。 freetype.lib
存在并且在正确的目录中。
我包括:
#include <ft2build.h>
#include FT_FREETYPE_H
如果重要的话,我的程序是用 C++ 编写的,并且我也在链接其他库。感谢任何帮助。
我找到了一个解决方案:according to this MSDN page,一些未解决的外部问题可以通过在附加依赖项中添加msvcrt.lib
和msvcmrt.lib
来解决。我试过了,不知何故,它奏效了。我仍然对这将如何解决问题感到困惑。而且,坦率地说,我仍然不太确定问题到底是什么。如果有人能帮助我理解这一点,将不胜感激。
注:
类似的问题可能是由链接配置标志中的不匹配引起的。问题 Resolving LNK4098: defaultlib 'MSVCRT' conflicts with 很好地解释了问题的详细信息和解决方案。
我遇到了同样的问题。我通过在附加依赖项中添加 mvcrt.lib
和 msvcmrt.lib
并将 /NODEFAULTLIB:LIBCMT
添加到链接器选项中的附加选项来解决这个问题。
以为我会配合我的解决方案 - 运行时库设置不匹配(我正在链接一个使用 /MT 而不是 /MD 构建的库。该设置位于 C/C++- >代码生成部分。)_
我正在 Visual Studio 2015 年使用 FreeType 库编译一个程序。之前,我曾使用同一个项目用我自己的 Font class (以及许多其他东西)编译静态库,使用库。一切都很好,class 工作得很好。但是,我最近将项目更改为 Windows 应用程序,将 Properties
->General
->Configuration Type
更改为 Application (.exe)
。这样一来,我可以同时编写程序和编辑代码,而无需复制所有 20 多个文件。
写完我的简单程序(与问题无关),并尝试重新编译,我得到了很多以前没有得到的错误。它们如下:
LNK2001 unresolved external symbol __imp__strncpy [...]\freetype.lib(ftbase.obj)
LNK2001 unresolved external symbol __imp__fread [...]\freetype.lib(ftsystem.obj)
LNK2001 unresolved external symbol __imp__realloc [...]\freetype.lib(ftsystem.obj)
LNK2001 unresolved external symbol __imp__strstr [...]\freetype.lib(truetype.obj)
LNK2001 unresolved external symbol __except_handler4_common [...]\MSVCRT.lib(_chandler4gs_.obj)
网上关于这些的资料似乎很少,更不用说这个特殊案例了。当我编译为静态库时一切都很好。我之前已经切换到编译一个 .exe
,而且它也工作得很好。我过去处理过未解决的外部问题,但这似乎莫名其妙。
我正在链接
#pragma comment(lib, "freetype.lib")
。 freetype.lib
存在并且在正确的目录中。
我包括:
#include <ft2build.h>
#include FT_FREETYPE_H
如果重要的话,我的程序是用 C++ 编写的,并且我也在链接其他库。感谢任何帮助。
我找到了一个解决方案:according to this MSDN page,一些未解决的外部问题可以通过在附加依赖项中添加msvcrt.lib
和msvcmrt.lib
来解决。我试过了,不知何故,它奏效了。我仍然对这将如何解决问题感到困惑。而且,坦率地说,我仍然不太确定问题到底是什么。如果有人能帮助我理解这一点,将不胜感激。
注:
类似的问题可能是由链接配置标志中的不匹配引起的。问题 Resolving LNK4098: defaultlib 'MSVCRT' conflicts with 很好地解释了问题的详细信息和解决方案。
我遇到了同样的问题。我通过在附加依赖项中添加 mvcrt.lib
和 msvcmrt.lib
并将 /NODEFAULTLIB:LIBCMT
添加到链接器选项中的附加选项来解决这个问题。
以为我会配合我的解决方案 - 运行时库设置不匹配(我正在链接一个使用 /MT 而不是 /MD 构建的库。该设置位于 C/C++- >代码生成部分。)_