Я создаю базовый компонент COM, чтобы можно было потренироваться в их создании.
Я экспортирую DllRegisterServer, DllUnregisterServer, DllGetClassObject и DllCanUnloadNow из файла .def с ключевым словом PRIVATE (я думаю, что Microsoft требует этого).
В любом случае, я указал все 4 функции с помощью внешней буквы "C", и все же я все еще искажаюсь.
Вот мой .def:
EXPORTS
DllRegisterServer PRIVATE
DllUnregisterServer PRIVATE
DllGetClassObject PRIVATE
DllCanUnloadNow PRIVATE
Вот искажение из мусорной корзины / ЭКСПОРТ
_DllCanUnloadNow@0
_DllGetClassObject@12
_DllRegisterServer@0
_DllUnregisterServer@0
Я знаю, что extern "C" помогает, потому что я получаю действительно плохое искажение без него, но я думал, что .def с extern "C" должен был избавиться от искажения имени?
Мой компилятор - VC ++ Express 2008.
Командная строка компоновщика:
/ OUT: «G: \ Programming \ COM \ BasicMathCOM \ BasicMath \ Release \ BasicMath.dll» / ДОПОЛНИТЕЛЬНО: НЕТ / NOLOGO / DLL / MANIFEST /MANIFESTFILE:"Release\BasicMath.dll.intermediate.manifest "/ MANIFESTUAC . / DYNAMICBASE / NXCOMPAT / MACHINE: X86 / ERRORREPORT: PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib Advapi32.lib *
+ / DEF: BasicMath.def, который я добавил под дополнительными опциями.