Folgendes:
Wenn du eine dll auf "normalem" wege erstellst(also so wie zb die tribase irrlicht ogre und was weiss ich was es so gibt) dann hast du meistens einen header den du includierst. in diesem header ist die api definiert.
Angenommen deine dll heisst jetzt mal "Test", dann würde deine api warschenlich wie folgt definiert sein:
|
C-/C++-Quelltext
|
1
2
3
4
5
|
#ifndef TEXT_EXPORTS
#define TEST_API __declspec(dllimport)
#else
#define TEST_API __declspec(dllexport)
#endif
|
TEST_EXPORTS wird dabei automatisch vom kompiler erstellt, wenn du die dll kompilierst.
So nehmen wir mal eine klasse in der dll, wo net alle methoden inline sind:
|
C-/C++-Quelltext
|
1
2
3
4
|
class TEST_API CTest
{
// bla bla bla
};
|
Wenn du alle methoden der klasse innerhalb der klasse definierst, musst du die klasse net exportieren. Wenn doch dann musst du sie exportieren, da du sonst nicht aufgelöste symbole kriegst(kommt gleich).
Also nehmen wir mal an du hast jetzt eine dll(wieder test.dll) geschrieben und kompiliert.
Eine Lib wird automatisch auch erstellt.
So das verzeichnis wo diese lib liegt kannst du nun im vs bekanntgeben.(Bei bibliotheksdateien).
Alternativ kannst du die lib auch erst noch wo anders hin kopieren als in zb den debug ordner.(Geht auch mit post-build ereignis).
Jedenfalls muss der pfad wo die lib liegt bekannt sein.
Dann erstellst du ein projekt welches die dll verwenden soll.
Einfach mal als beispiel ne ganz normale konsolenanwendung. leeres projekt.
Nun includierst du den header der dll, wo die api definiert ist.
dann.... geht ist in die projekteigenschaften->linker->eingabe oder englisch link->input.
So dort schreibst du jetzt den name deiner lib rein.
noch ein bissl code, dann kompilieren und fertig.
Ach was ich ganz vergessen habe: Das verzeichnis wo der header liegt, muss natürlich auch bekannt sein(unter includedateien).
Wie wäre es wenn wir dieses meisterwerk ins
FAQ tun? dann würde es sich lohnen die rechtschreibfehler zu korrigieren.
Socke