views:

1003

answers:

2

I am creating a simple C++ DLL project using Visual Studio 2008 Express Edition. I have a few classes inside a namespace, and a few non-static functions and constructors inside it are declared with __declspec(dllexport). All those functions are implemented.

I also have an extern "C" BOOL APIENTRY DllMain function which simply returns TRUE.

As I hit Debug(or Release), it successfully builds with no errors nor warnings. The output folder(either "Debug/" or "Release/") gets files such as "BuildLog.htm", one ".obj" file per source file, "vc90.pdb", "vc90.idb", "[DLLNAME].dll.embed.manifest", "[DLLNAME].dll.embed.manifest.res", "[DLLNAME].dll.intermediate.manifest" but... not the DLL itself.

This is the first time I try to compile this project(so I never sucessfully compiled before) and I have little experience with C++/DLLs, although I do know standalone C++ and created Linux C shared objects before.

What am I doing wrong? Is there any particular required file that I'm missing?

+3  A: 

I'd look up a little higher in the directory structure (the one that the solution is in) and see if your Debug/Release folders (with the DLL) are there.

I think the default is to put the actual DLLs in folders in the solution directory, not the project directory (I think the assumption is that you want all the DLLs that you build for a solution to go to the same place)

Daniel LeCheminant
Thank you so much! I never expected it to be there. No language in the past did that, so it was completelly unexpected to me...
luiscubal
@luiscubal: No problem :] (You're certainly not the first person this has happened to!)
Daniel LeCheminant
A: 

Right click on <ProjectsName> in Solution Explorer View, select Properties, go to Configuration Properties > General tab and check out the Output Directory field. The path may consist of some macros like $(SolutionDir)$(ConfigurationName) etc. Click on it, select Edit and then when a window pops up choose Macros to see what they actually mean e.g. which directory SolutionDir maps to. You can deduce the output dll's path from there.

dirkgently