000
30.06.2010, 07:51 Uhr
~FreiherrEintritt_
Gast
|
Ich habe eine Projektmappe (Visual Studio 2008) mit mehreren Projekten. Alles Win32-Konsolenanwendungen, einige sind DLLs, andere normale exe-Dateien und eines ist ein Dienst.
Die DLLs exportieren Klassen, die ich so in den Headern deklariere:
C++: |
class DLLclass { static __declspec(dllexport) void method(); ... };
|
Wenn ich diese Klassen in den anderen Projekten nutzen will, erstelle ich einfach einen Verweis auf das DLL-Projekt und passe die Include-Pfade an (ich benutze also die gleichen Header in den DLL-Projekten und den Projekten, die die DLL-Klassen benutzen).
Das funktioniert für anderen DLL-Projekte und die Konsolenanwendungen, nicht aber für den Dienst.
Beim Kompilieren sagt er mir:
Code: |
error C3389: __declspec(dllexport) kann bei /clr:pure oder /clr:safe nicht verwendet werden. 1>c:\...\Header.h(12) : error C3395: "DLLclass::method": __declspec(dllexport) kann nicht mit der __clrcall-Aufrufkonvention auf eine Funktion angewendet werden.
|
So wie ich das sehe, betrifft das die Compiler-Option "CLR-Bildtyp" im Projekt-Menü des Dienstes. Aber wenn ich daran rumspiele, ändert das nichts an der Fehlermeldung.
Wie kann ich diese DLL-Klassen in den Dienst einbinden? |