hi leutz,
ich hab ein großes problem dabei eine klasse, die std::vector nutzt in eine dll auszulagern nachdem ich mir
dieses beispiel angesehen habe
ich verwende diese struktur zur aufbewahrung einiger daten:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
|
struct __declspec(dllexport) SSoundGroup
{
DWORD dwGroupID;
float fVolume;
float fPan;
};// SSoundGroup
__declspec(dllexport) BOOL operator < (const SSoundGroup& a, const SSoundGroup& b);
__declspec(dllexport) BOOL operator == (const SSoundGroup& a, const SSoundGroup& b);
template class __declspec(dllexport) std::vector<SSoundGroup>;
|
und lege die in meiner settings klasse in einem vector ab
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
// sound settings controll class
class __declspec(dllexport) Settings
{
/*...*/
std::vector<SSoundGroup> _vGroups;
};
|
und wenn ich die dll jetzt kompiliere, dann geht das zwar fehler frei aber ich bekomm andauernd so blöde warnigs:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
d:\Programmieren\Visual Studio .NET 2003\Vc7\include\vector(35) : warning C4251: 'std::_Vector_val<_Ty,_Alloc>::_Alval': class 'std::allocator<_Ty>' erfordert eine DLL-Schnittstelle, die von Clients von class 'std::_Vector_val<_Ty,_Alloc>' verwendet wird
with
[
_Ty=CE::Sound::SSoundGroup,
_Alloc=std::allocator<CE::Sound::SSoundGroup>
]
and
[
_Ty=CE::Sound::SSoundGroup
]
and
[
_Ty=CE::Sound::SSoundGroup,
_Alloc=std::allocator<CE::Sound::SSoundGroup>
]
d:\Eigene Dateien\Visual Studio Projects\Games\engines\CE2-Engine\My Work\Sound\Sound v01.5\CE2\include\Sound\CESoundSettings.h(47): Siehe Verweis auf Instanziierung der kompilierten Klassenvorlage 'std::vector<_Ty>'
with
[
_Ty=CE::Sound::SSoundGroup
]
|
wie bekomme ich die weg???
ich hab im inet nichts weiter dazu gefunden