CReating a DLL whcih can export 'n' number of functions for a client application
-
wrote on 21 Jun 2011, 12:34 last edited by
Helo All,
I would like to develop a .dll with Qt which can be able to export some 'c' functions to client application. Can experts guide me on this ?
many thanks,
-
wrote on 21 Jun 2011, 12:41 last edited by
you have to sorround the functions with
@
extern "C"
{
// do your functions and export definitions here
}
@if you use MSVS tool chain. Don't know whether it is also needed for others like gcc etc.
-
wrote on 21 Jun 2011, 13:48 last edited by
The easiest way to set up a project for a shared library / DLL is to use the Qt Creator New Project... wizard (and select Other Project / C++ Library). That will give you a good starting point with import / export defines etc.
If you want to make it a pure C DLL, the interface obviously has to be pure C, no C++ classes as return values or parameters.
-
wrote on 21 Jun 2011, 17:13 last edited by
Er.. this ("__declspec(dllexport)" and "__declspec(dllimport)") is required too.. isn't it?
MyDllDef.h
@
#ifdef INMYLIB
#define MYLIBDEF __declspec(dllexport)
#else
#define MYLIBDEF __declspec(dllimport)
#endif
@MyLib.h
@
#include "MyDllDef.h"MYLIBDEF void exported_fn();
@MyApp.cpp
@
#include <MyLib.h>void runFn()
{
exported_fn();
}
@You might also need to use the extern C.. Look at this "Stack Overflow":http://stackoverflow.com/questions/2288293/windows-c-extern-declspecdllimport post on it.
-
wrote on 21 Jun 2011, 18:19 last edited by
Yeah, that's exactly what you get from the Other Project / C++ Library wizard. That's what I meant by 'import / export defines etc.' (though I agree I could have been a bit more explicit).
-
wrote on 21 Jun 2011, 18:51 last edited by
-
wrote on 21 Jun 2011, 19:01 last edited by
But that's only needed on windows for MSVC compiler, mingw does it in another way, so I suggest using Q_DECL_EXPORT / Q_DECL_IMPORT. They map to the correct, compiler specific code.
1/7