zu unserem Online-Shop | to our catalogue

COM-Dll Konflikt mit MFC-Klassen

Problem

Alle die schon einmal versucht haben eine COM-Dll unter Visual Studio 2008 zu bauen, kommen nach ca. einem halben Tag Zeitverlust und "Investigations for the solution to the issue" zu dem Schluss, dass nicht an Ihrem Programm etwas falsch ist, sondern an den MFC-Klassen.

Fehlermeldung des VS2008 C/C++-Compilers:

mfcs90u.lib(oleexp.obj) : error LNK2005: _DllGetClassObject@12  already defined in dllentry.obj
mfcs90u.lib(oleexp.obj) : error LNK2005: _DllCanUnloadNow@0 already defined in dllentry.obj

Lösung

Die .def Datei in der die COM-Exporte stehen ist entsprechend anzupassen, damit keine Konflikte mehr auftreten. Es wird ein einfaches Mapping durchgeführt. Die entsprechenden Funktionsdefinitionen bzw. deren Deklarationen in .h und .cpp Dateien sind entsprechend anzupassen.

Bisheriger Dateiinhalt:

EXPORTS
    ; Explicit exports can go here
    DllCanUnloadNow PRIVATE
    DllGetClassObject PRIVATE
    DllRegisterServer PRIVATE
    DllUnregisterServer PRIVATE

Neuer Dateiinhalt:

EXPORTS
    ; Explicit exports can go here
    DllCanUnloadNow = MyDllCanUnloadNow PRIVATE
    DllGetClassObject = MyDllGetClassObject PRIVATE
    DllRegisterServer = MyDllRegisterServer PRIVATE
    DllUnregisterServer = MyDllUnregisterServer PRIVATE

Das Ganze ist allerdings nicht auf meinen Mist gewachsen, sondern entstammt einem Thread aus einem Microsoft-Forum. Ich bin nur durch lange Suche darauf gestoßen und habe es hier noch einmal weitergezwitschert, damit es nicht in Vergessenheit gerät.

Url: http://social.msdn.microsoft.com/Forums/en-US/vcplus2008prerelease/thread/4d834b49-8662-437b-b8e1-86aa259f1168

Fazit

Viel Spaß auch weiterhin mit der Entwicklung von COM-Servern. ;-)

powered by typo3 Impressum · Kontakt
TUX
Ich Valid XHTML 1.1
CSS ist valide!
Webserver powered by Debian
Development powered by Apache
Enlightened with PHP
Data grabbed from MySQL Database
Best viewed with Firefox
We love Free Software!
Tea compliant! Powered by hours of work and many cups of tasteful tea
Enhanced with 3d graphics