如果您在头文件中定义函数,编译器将在生成.exe项目并将函数代码的副本直接编译到.exe项目时看到函数实现。在构建过程中,当链接器轮到时,没有任何东西丢失,所以链接器很快乐,并且不会收到错误消息。
如果您在.cpp文件中定义函数,编译器将不会看到函数实现。因此,它将提供一个对构建期间链接器轮换时需要解决的函数(即外部符号)的引用。要使链接器“看到”外部符号,您需要将.exe项目与.lib项目链接起来。建立链接依赖关系后,链接器将能够找到外部符号并解析对由编译器生成的函数的引用。由于您有一个.lib项目,它是一个静态库项目,链接器通过从.lib文件中获取函数的代码并将代码的副本放入.exe文件来解析该符号。
这么多理论。现在,让您的.exe项目链接对你的.lib项目可能是最简单的办法就是通过增加一个参考:
- 在.exe项目的设置,选择名为“公共属性”一节在部分的顶部名单。
- 您现在应该看到.exe项目具有的引用列表。该列表可能是空的。
- 单击对话框底部的“添加新引用”按钮并添加.lib项目作为参考
- 当您在引用列表中选择新引用时,您将看到该引用的一组属性。确保名为“链接库依赖关系”的属性设置为true。这将导致.lib项目在生成.exe项目时作为链接器的输入自动添加。
如果您构建.exe项目,现在链接器错误将消失。
顺便提一下,通过添加项目引用,您还告诉Visual Studio如果构建整个解决方案,则按正确顺序构建两个项目:首先是.lib项目,然后是.exe项目。
您正在使用哪个IDE? “项目”和“解决方案”是IDE特定的术语。也许把它添加为标签? – Svaberg
编辑我的问题。谢谢。 – Tahlil
只需在您的项目中添加带定义的cpp文件 –