Anfänger Problem mit includes Header Files
-
Hi
Habe versucht Teile unserer Win32/MFC Applikation auf .NET umzustellen. Dazu musste ich eine Win32/MFC Dll aufrufen.
Jetzt habe ich versucht eine Wrapper Klasse zu erstellen. (Unter Hilfenahme der MSDN hat das soweit gut funtioniert)Wenn ich aber die Funktion in der Win32 DLL Aufrufen will bekomme ich folgendes Problem.
Die Win32 Funktion sieht ungefähr so aus:
funcWin32(TCHAR *pTitel, _com_error& e);
Ich habe nun eine Managed Klasse angelegt
public ref class C1 { public: C1(void) {}; void ManagedFunc(); }
Nun will ich unter ManagedFunc die windows Funktion funcWin32 aufrufen.
Um die definition fon "_com_error" zu bekommen includiere ich "comdef.h"
Dann bekomme ich viele Fehler:1>c:\msvs8\vc\platformsdk\include\servprov.h(93) : error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\msvs8\vc\platformsdk\include\servprov.h(48) : System::IServiceProvider IServiceProvider' 1> or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' 1>c:\msvs8\vc\platformsdk\include\servprov.h(93) : error C3699: '*' : cannot use this indirection on type 'IServiceProvider' 1> compiler replacing '*' with '^' to continue parsing 1>c:\msvs8\vc\platformsdk\include\servprov.h(100) : error C2371: 'IServiceProvider' : redefinition; different basic types 1> c:\msvs8\vc\platformsdk\include\servprov.h(48) : see declaration of 'IServiceProvider' 1>c:\msvs8\vc\platformsdk\include\servprov.h(117) : error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\msvs8\vc\platformsdk\include\servprov.h(100) : IServiceProvider'
Wie kann ich das Problem umgehen??
Danke
-
Wenn ich windows.h includiere kommen die selben Fehler!
-
Ich sollte noch erwähnen, dass ich eine reguläre DLL mit MFC/shared DLL verwende
-
Jerry2000 schrieb:
Hi
Habe versucht Teile unserer Win32/MFC Applikation auf .NET umzustellen. Dazu musste ich eine Win32/MFC Dll aufrufen.
Jetzt habe ich versucht eine Wrapper Klasse zu erstellen. (Unter Hilfenahme der MSDN hat das soweit gut funtioniert)Wenn ich aber die Funktion in der Win32 DLL Aufrufen will bekomme ich folgendes Problem.
Die Win32 Funktion sieht ungefähr so aus:
funcWin32(TCHAR *pTitel, _com_error& e);
Ich habe nun eine Managed Klasse angelegt
public ref class C1 { public: C1(void) {}; void ManagedFunc(); }
Nun will ich unter ManagedFunc die windows Funktion funcWin32 aufrufen.
Um die definition fon "_com_error" zu bekommen includiere ich "comdef.h"
Dann bekomme ich viele Fehler:1>c:\msvs8\vc\platformsdk\include\servprov.h(93) : error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\msvs8\vc\platformsdk\include\servprov.h(48) : System::IServiceProvider IServiceProvider' 1> or 'c:\windows\microsoft.net\framework\v2.0.50727\mscorlib.dll : System::IServiceProvider' 1>c:\msvs8\vc\platformsdk\include\servprov.h(93) : error C3699: '*' : cannot use this indirection on type 'IServiceProvider' 1> compiler replacing '*' with '^' to continue parsing 1>c:\msvs8\vc\platformsdk\include\servprov.h(100) : error C2371: 'IServiceProvider' : redefinition; different basic types 1> c:\msvs8\vc\platformsdk\include\servprov.h(48) : see declaration of 'IServiceProvider' 1>c:\msvs8\vc\platformsdk\include\servprov.h(117) : error C2872: 'IServiceProvider' : ambiguous symbol 1> could be 'c:\msvs8\vc\platformsdk\include\servprov.h(100) : IServiceProvider'
Wie kann ich das Problem umgehen??
DankeNaja. Das Ganze hat offensichtlich etwas damit zu tun wie du deine header in das managed source file inkludierst. Poste mal deinen headerfilekopf.
WW
-
Ich glaube ich habe das Problem gefunden. Ich habe in dem Header File meiner Wrapper Klasse folgendes definiert:
using namespace System;
Das in zusammenhang mit "windows.h" will nicht funktionieren.
Falls einer nachlesen will
http://msdn2.microsoft.com/en-us/library/Aa712965(VS.71).aspx