开发者

CVTRES.exe is discarding my DLL exported functions

开发者 https://www.devze.com 2023-02-18 13:44 出处:网络
I\'m working on a project that creates a DLL in C for Windows CE 5.0 using STANDARDSDK_500. The project is relatively simple with just one C source file. What I\'ve noticed is that when I clean and bu

I'm working on a project that creates a DLL in C for Windows CE 5.0 using STANDARDSDK_500. The project is relatively simple with just one C source file. What I've noticed is that when I clean and build the project using Visual Studio 2005, it fails to create my Import lib. When I tell Visual Studio to rebuild it, it correctly creates the import lib.

Turning on verbose linking, I discover that in the failure case (clean and build) CVTRES.exe is discarding my functions, like so:

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!
...

This discards all of my functions, which causes the linker to not create an import lib because there are no exported functions.

I figured that the input was the .res file mentioned in the commandline - WLTBApi.res. This file is identical in the intermediate directory after trying to compile both the working way (rebuild) and the non-working way (clean. build).

So, my first question is: what are the other inputs to the CVTRES.exe program so that I can find discrepencies between the two builds?

Second: what other troubleshooting techniques would you reco开发者_开发知识库mmend?

Additional Info - I thought perhaps the .obj files were additional inputs - they differ between the builds. I now believe that they are outputs of CVTRES.exe. If anyone knows whether or not I'm correct in this, let me know.


Okay, so I found a solution, but I'm terribly dissatisfied with it. I discovered that the project I was building had a Dependency, but one that wasn't actually a dependency. In other words, the project, WLTBApi was building a DLL, and had a dependency configured, WLTBApiLib, but it wasn't actually using any of the output of that project. By removing the dependency, the problem went away.

I'd still love to know more about how to find an actual answer to what was going on, but maybe this answer will help someone else in the future.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号