如何在Visual Studio中生成对象(.obj)文件

时间:2014-10-29 12:01:21

标签: visual-studio-2010 visual-c++

我是visual studio win32 / VC ++应用程序开发的新手。我只是想知道如何生成.obj文件以及如何解决.obj文件中找到的未解析的外部符号。

1 个答案:

答案 0 :(得分:1)

目标文件包含从源代码生成的可重定位机器代码。 Visual Studio为每个.obj文件创建一个.cpp文件。然后,根据项目(可执行文件,静态/动态库),您可以获得可重定位或不可重定位的代码。如果代码是可重定位的,那么编译时不可用的符号(函数调用,变量)将被标记为未解析,当您链接执行重定位的内容(例如可执行文件)时,如果其他输入执行,则会得到未解析的引用错误不提供未解决的符号。要解决这些问题,您必须提供包含它们的目标文件的输入(例如,当您的应用程序具有项目中使用的其他库所依赖的某些全局函数时)或者在包含其标题时链接外部库。

当一个包含来自特定于操作系统的API或第三方库的头文件并且不知道要链接的内容时,通常会发生未解决的符号问题。如果你使用第三方库指定它们作为额外的链接器输入,那么拇指的规则是,如果你使用OS API查找文档来查看你应链接的内容(例如MSDN总是说明每个函数所需的库)。当然,您可能会使用由其他人构建的库,它具有自己的某些依赖关系,然后即使没有明确引入任何外部头文件或库,您也可以进入这些问题。在这种情况下,明智的是找到有关如何构建库的信息以及依赖项的位置 - 然后您可以找到并提供预构建的二进制文件,或者在最坏的情况下构建自己的依赖项并将它们作为链接器输入提供。 / p>

我写了一篇关于解决可能相关的未解决符号here的答案。