regsv32 kann nich registrieren
-
Was sagt
dumpbin
? IstDllRegisterServer()
wirklich exportiert? Exportierst Du vielleicht per .def-File und hast vergessen es auch für die x64-Configuration in den Linkereinstellungen anzugeben?
-
@Swordfish sagte in regsv32 kann nich registrieren:
NmsCmCommon.dll
Die Frage ist: Warum willst Du das tun?
Du stellst vermutlich eine x-y Frage...Das riecht förmlich danach, dass es kein COM Modul ist.
Kann es sein, dass Du REGASM benutzen musst, weil es ein .NET Modul ist,Woher ist das Modul? Frage den Hersteller.
-
@Martin-Richter Du hast den falschen zitiert.
@TAK_1969 Gaaaah, bist du das, Herr Kocher? can not register NmsCmCommon.dll using regsvr32? Wennn schon crossposten dann wenigstens darauf aufmerksam machen. *kopfschüttel*
-
Ok der Link auf den anderen Post wäre sinvoll gewesen. Das Problem ist das die Funktion DllRegisterServer() nicht mehr exportioert wird siehe meine früher Frage
welche ich so wie es Aussieht falsch gelöst habe.
-
Wenn dieser Entry-Point nicht exportiert wird, dann stellt diese DLL auch keine COM Objekte zur Verfügung...
Es kann immer noch ein .NET Modul sein.
-
DotNet ist es definitv nicht aber das Problem ist das es seit der Migration auf X64 keine Com Objekte mehr hat wenn ich diese wieder mit
ragma comment(linker,"/EXPORT:DllCanUnloadNow=_DllCanUnloadNow@0,PRIVATE")
pragma comment(linker,/EXPORT:DllGetClassObject=_DllGetClassObject@12,PRIVATE")
pragma comment(linker, "/EXPORT:DllRegisterServer=_DllRegisterServer@0,PRIVATE")
pragma omment(linker,"/EXPORT:DllUnregisterServer=_DllUnregisterServer@0,PRIVATE")exportiren will habe ich unresolved external Symbols dieser Funktionen Dies aber erst seit der umstallung auf X64 .
-
Und wo ist der Code für diese Funktionen?
In welchem .cpp Modul?
-
Ich tippe darauf, daß das "name mangling" für x64 unterschiedlich zu x86 ist, s. z.B. 64bit name mangling for c++.
-
Ich würde eher darauf tippen dass @12 bei einer Funktion die drei pointer-sized Parameter hat (wie eben DllGetClassObject) bei 32 Bit wunderbar passt (32/8*3=12), bei 64 Bit aber eher nicht so.
Probier's mal mit_DllGetClassObject@24
für den 64 Bit Build.Oder mach die Funktionen gleichEDIT: Nö, falsch gedacht, dabei entstehend wohl trotzdem diese komischen Namen. Hmpf. Egal, das @24 sollte passen.extern "C" __declspec(dllexport)
, dann kannst du dir die ganzen pragma comment linker sparen.
-
Ich konnte diese Problem Lösen undem ich die pragmas anpasste
pragma comment(linker,"/EXPORT:DllCanUnloadNow,PRIVATE")
pragma comment(linker,/EXPORT:DllGetClassObject,PRIVATE")
pragma comment(linker, "/EXPORT:DllRegisterServe,PRIVATE")
pragma omment(linker,"/EXPORT:DllUnregisterServer,PRIVATE")