Dafür gibts
|
C-/C++-Quelltext
|
1
2
|
__declspec( dllexport )
__declspec( dllimport )
|
Die Verwendung ist ganz einfach, du definierst für deine DLL ein Präprozessor-Definition (hier mal XYZ_EXPORT). Anhand dieser kannst du dann unterscheiden ob du die Klassen
exportieren oder
importieren willst:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
#ifdef XYZ_EXPORT
#define XYZ_API __declspec( dllexport )
#else
#define XYZ_API __declspec( dllimport )
#endif
|
Je nachdem ob du nun deine DLL compilierst, oder die DLL-Header in deinem Projekt (dass das die DLL verwenden soll) hast steht hinter
XYZ_API entweder der Hinweis zu exportieren oder zu importieren...
Eine Klasse ex/importierst du dann wie folgt:
|
C-/C++-Quelltext
|
1
2
3
4
|
class XYZ_API Image
{
// ...
};
|
Beim compilieren der DLL wird daraus (automatisch):
|
C-/C++-Quelltext
|
1
2
3
4
|
class __declspec( dllexport ) Image
{
//...
};
|
Willst du die Klasse in einem anderen Projekt importieren bindest du einfach die entsprechenden Header ins Projekt mit ein. Der Compiler erkennt, aufgrund fehlender XYZ_EXPORT Präprozessor-Definition, dass die Klasse importiert werden soll. Der Präprozessor löst den Code ja folgendermasen auf:
|
C-/C++-Quelltext
|
1
2
3
4
|
class __declspec( dllimport ) Image
{
//...
};
|
Damit du die Klasse wirklich nutzen kannst musst du natürlich noch die entsprechende .lib linken (diese wird beim Compilieren der DLL erzeugt), entweder über die Projekteinstellungen. Oder, mit manchen Compilern gehts, per:
|
C-/C++-Quelltext
|
1
|
#pragma comment( lib, "deinelib.lib" )
|
direkt im Code.