Hallo!
Ich scheitere am Problem eine C#.NET DLL bzw. eine daraus erstellte TypeLibrary von einem VC++ Programm zu starten.
Ich habe mehrere Möglichkeiten (wie man das mit einer VB.tlb macht) im Internet gefunden und durchprobiert und bis jetzt noch keine Lösung gefunden.
zB:
#import „d:\testinterface\testinterface.tlb“ rename_namespace(„TestInterface“)
GUID typeLibGUID;
AfxGetClassIDFromString( _T("{F378D3F4-381C-3D38-ACF1-E97CBBEE31D7}"), &typeLibGUID);
AfxOleRegisterTypeLib(AfxGetInstanceHandle(), TypeLibGUID, „TestInterface.tlb“);
TestInterface::InterfaceTestPtr m_TestPtr;
HRESULT hr = m_TestPtr->GetActiveObject(__uuidof(TestInterface::InterfaceTest));
m_TestPtr.CreateInstance(__uuidof(TestInterface::InterfaceTest));
m_TestPtr->A_Plus_B(10, 10);
Visual C++ erkennt die Method A_Plus_B schon übers Autovervollständigen und meldet keine Compilierfehler.
Das erste Problem tritt dann bei CreateInstance auf. Die Methode ruft intern CoCreateInstance auf, die mir immer ein -27tausendirgendwas zurückwirft.
Dann ist m_TestPtr == NULL und ich kann natürlich die AplusBmehtode nicht aufrufen.
Wer hat so etwas denn bitte schon einmal gemacht, oder weiß eine andere Möglichkeit in VC++ Code aus C# aufzurufen?