Ich baute eine COM-DLL (Debug x64) auf einem Computer. Ich habe alles eingerichtet und arbeite dort (ich kann es in C: \ Windows \ Micorosft.NET \ Assembly und OLEVIEWER sehen).COM .NET DLL registriert nicht im GAC (REGDB_E_CLASSNOTREG)
Ich nahm die DLL auf eine andere Maschine (zusammen mit seiner .h und .c-Datei von MIDL generiert). Ich registriere die DLL in den GAC, indem ich diese Schritte http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html führe - Schlüsselpaare erstellen, MISL generieren, Assembly von MISL mit dem Schlüssel neu aufbauen und dann zum GAC hinzufügen. Es scheint in der GAC zu sein, und ich kann versuchen, es mit gacutil/l MyDllName zu suchen. In meiner Clientanwendung, wenn ich dagegen verlinke, bekomme ich zur Laufzeit beim Aufruf CoCreateInstance
REGDB_E_CLASSNOTREG
(HRESULT). Ich kann die DLL weder in C: \ Windows \ Microsoft.NET/Assembly noch in OLEVIEW sehen.
Habe ich irgendwelche Schritte verpasst oder etwas falsch gemacht?
Dank
Sie haben nie erwähnt, Regasm.exe zu verwenden, um die Assembly zu registrieren. Sie können dies auf Ihrem Dev-Computer überspringen, wenn Sie das Kontrollkästchen "Für COM-Interop registrieren" des Projekts verwenden. Natürlich nicht auf dem Computer des Benutzers. Die Verwendung von MIDL ist übrigens seltsam, das klingt nicht koscher. –
Wenn Sie MIDL nicht verwenden (wie das Tutorial unter http://codeingaddiction.blogspot.com/2011/06/how-to-add-strong-name-to-existing-dll_16.html zeigt), was ist der "Koscher"? Art und Weise es zu tun? (Übrigens mein Gedanke mit MIDL war ein bisschen hacky) – Prof
Sie würden normalerweise die # Import-Anweisung in einem C++ - Programm verwenden. –