如何解决忽略丢失的.obj文件或“ / P开关+外部工具+链接器=地狱”
| 我试图按照上一个问题中的描述进行设置:在编译之前,可以通过外部工具解析预处理的源吗? 我所有的.cpp文件都设置为使用/ p编译,/ p会为所有文件生成.i(预处理)文件,但不生成目标文件。这些生成的.i文件也会添加到我的项目中,并且我的工具中设置了一个外部构建工具选项,用于修改这些文件,并将其保存在新的扩展名.obfuscated.cpp下。 所有这些.obfuscated.cpp文件也都添加到项目中,并设置为正常编译,从而生成目标文件。 现在的问题是,由于某些原因,Visual Studio(或链接器,其中的某些人)希望从.cpp文件(现在仅将其保存到.i文件,不再生成目标文件)和.obfuscated中的obj文件。 cpp(通常创建)。 我会假定链接器将不需要来自设置为使用/ P选项进行编译的源中的.obj文件,因为,该选项会阻止创建目标文件。 现在,我只看到两种解决方法: 1)分两步进行构建。在第一个文件中,确保所有.cpp文件都经过预处理并保存为.i文件。此构建不必完成,只需要保存.i文件即可。然后,选择所有.cpp文件并将它们设置为“从构建中排除”,然后一切都将按预期进行编译。 2)而不是将文件添加到项目中并使用外部构建工具选项,而是执行预链接步骤,在该步骤中,我自己的工具将自动查找所有.i文件(可以将某个目录中的所有* .i文件),将它们处理为* .obfuscated.cpp,然后在所有这些文件上手动调用cl.exe以生成目标文件,将它们重命名为适当的名称(以便链接器认为它们是从原始源创建的目标文件)并放入进入中间目录。但是在这种情况下,我必须跟踪所有编译器参数,并在项目中发生某些更改时进行相应的更改... 这两种解决方案似乎都不是很成功。在Visual Studio中还有其他方法可以做到这一点吗?我不能只是告诉链接程序忽略丢失的.obj文件吗? (无论如何都可以找到所有符号...)解决方法
也许这可以为您提供帮助:不用扩展名ѭ0而是给它一个更简单的扩展名ѭ1,然后将那些ѭ1add文件(第一次编译后)添加到您的项目中(在项目的单独文件夹中),然后将每个
.icpp
文件转到它们属性页并设置正确的构建工具(C \\ C ++编译器),并且.obj
文件保留与原始original5ѭ文件相同的名称部分,因此应自动正确进行链接。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。