[CMake] Creating a DLL using .DEF file on MinGW

Petr Kmoch petr.kmoch at gmail.com
Thu Sep 13 02:48:55 EDT 2012


Hi,

just a wild guess: .def files for C++ projects have to list the mangled
names, so if you want the export name to be just "testfunc", it should be
declared as 'extern "C"'.

Petr

On Thu, Sep 13, 2012 at 8:17 AM, Ali Hamdi <alha02 at gmail.com> wrote:

> Hello everybody,
>
> I am trying to create a DLL by using a .DEF file and targeting the
> MinGW gcc-compiler. In my CMakeLists.txt I have this:
>
> add_library(MyDll SHARED
>                 MyDll.cpp
>                 dllmain.cpp
>                 stdafx.cpp
>                 MyDll.def).
>
> I have the following sources:
>
> MyDll.def:
>
> LIBRARY libMyDll
> EXPORTS testfunc
>
> stdafx.cpp:
>
> #include "stdafx.h"
>
> stdafx.h:
>
> #define WIN32_LEAN_AND_MEAN
> #include <windows.h>
>
> dllmain.cpp:
>
> #include "stdafx.h"
>
> BOOL APIENTRY DllMain( HMODULE hModule,
>                        DWORD  ul_reason_for_call,
>                        LPVOID lpReserved
>                                          )
> {
>         switch (ul_reason_for_call)
>         {
>         case DLL_PROCESS_ATTACH:
>         case DLL_THREAD_ATTACH:
>         case DLL_THREAD_DETACH:
>         case DLL_PROCESS_DETACH:
>                 break;
>         }
>         return TRUE;
> }
>
> and finally
>
> MyDll.cpp:
>
> #include "stdafx.h"
>
> __declspec(dllexport) int __stdcall testfunc(int x )
> {
>         return 1;
> }
>
>
> If I do a regular cmake to create Visual Studio files, everything
> compiles and links just fine (within VS Express 2010). But if I use
> the CMAKE GUI and explicitly target MinGW, and then use make in the
> cmd-prompt then I get the following error:
>
> Creating library file: libMyDll.dll.a
> Cannot export testfunc: symbol not defined
>
>
> Any idea of what I am doing wrong here? I would really appreciate some
> help.
> --
>
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the CMake FAQ at:
> http://www.cmake.org/Wiki/CMake_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.cmake.org/mailman/listinfo/cmake
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.cmake.org/pipermail/cmake/attachments/20120913/e756e58a/attachment.htm>


More information about the CMake mailing list