1

我使用QMaketo gen *.vcproj(from *.pro) 来创建将 C++ 类公开给 QML (Qt5.0.1/MSVC2010) 的 DLL。DLL 工作。

但是,我有两个问题(它们可能是相关的):

  1. 当我“构建”时,它总是重新编译 DLL 中的所有内容。(它永远不是“最新的”。)
  2. 如果我收到“链接失败”(例如,某些输入库没有定义所需的函数),MSVC 将删除所有*.obj中间文件和其他中间文件,要求下一次构建(不必要地)重建这些中间文件。(“链接成功”将保留中间*.obj文件,但下一个构建将强制它们重新生成。)这意味着当我修复“输入静态- ”时,我永远无法执行“仅项目 => 仅链接”库”。

这两个看起来都很奇怪。而且,他们让我难过。

请注意,由于我.vcproj每次都“重新生成”,因此磁盘上不存在不存在的“项目中的文件”(其他人认为这是始终触发重建的原因)。

我已经尝试过“愚蠢的东西”,比如重新安装服务包、干净的构建、手动删除所有中间件/工件、重新启动等。

从网络搜索(为了解决这个问题,为了解决这个问题而进行了数周的大量阅读),这可能与:

  • 每个 DLL 都有自己的“中间 OBJ”目录,但它们都写入相同的(共享调试)-“输出”文件夹,用于.dll/.lib. (应该没问题吧?)

如果“正确修复”失败(MSVC 意识到事情是最新的),是否有一种解决方法,我可以抑制删除中间文件,以便以后可以强制执行“重新链接”,当我知道事情应该没问题的时候?目前,我不能“仅项目 => 仅链接”,因为中间体被删除。(如何阻止 MSVC 删除.obj文件?)

4

0 回答 0