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 <alh...@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
>
--

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

Reply via email to