CVTRES.exe正在丢弃我的DLL导出函数

时间:2011-03-18 19:40:54

标签: visual-c++ visual-studio-2005 linker

我正在开发一个使用STANDARDSDK_500在C for Windows CE 5.0中创建DLL的项目。只有一个C源文件,项目相对简单。我注意到的是,当我使用Visual Studio 2005清理和构建项目时,它无法创建我的Import lib。当我告诉Visual Studio重建它时,它会正确创建导入库。

打开详细链接,我发现在失败的情况下(清理和构建)CVTRES.exe正在丢弃我的功能,如下所示:

Invoking CVTRES.exe:
/machine:thumb
/verbose
/out:"C:\...\Temp\lnkC7E.tmp"
/readonly
/windowsce
".\standardsdk_500 (armv4i)\release\WLTBApi.res"
Microsoft (R) Windows Resource To Object Converter Version 8.00.50727.42
...
adding resource. type:VERSION, name:1, language:0x0409, flags:0x30, size:892
Discarded '.idata$4' from coredll.lib(COREDLL.dll)
...
Discarded WLRegisterStartupApp from WLTBApi.obj // my functions! Oh noes!
...

这会丢弃我的所有函数,导致链接器不创建导入库,因为没有导出的函数。

我认为输入是命令行中提到的.res文件 - WLTBApi.res。在尝试编译工作方式(rebuild)和非工作方式(clean.build)后,此文件在中间目录中是相同的。

所以,我的第一个问题是:CVTRES.exe程序的其他输入是什么,以便我可以找到两个构建之间的差异?

第二:您会推荐哪些其他故障排除技术?

附加信息 - 我想也许.obj文件是额外的输入 - 它们在构建之间有所不同。我现在相信它们是CVTRES.exe的输出。如果有人知道我是否正确,请告诉我。

1 个答案:

答案 0 :(得分:1)

好的,所以我找到了一个解决方案,但我对它非常不满意。我发现我正在构建的项目有一个依赖项,但实际上并不是依赖项。换句话说,项目WLTBApi正在构建一个DLL,并且配置了一个依赖项WLTBApiLib,但它实际上并没有使用该项目的任何输出。通过删除依赖关系,问题就消失了。

我仍然希望更多地了解如何找到正在发生的事情的实际答案,但也许这个答案将来会帮助其他人。