Искажение имени с файлом определения и внешним "C"
Я создаю базовый 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:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"g:\Programming\COM\BasicMathCOM\BasicMath\Release\BasicMath.pdb" /SUBSYSTEM:WINDOWS /OPT:REF /OPT:ICF /LTCG /DYNAM NXCOMPAT /MACHINE:X86 /ERRORREPORT:PROMPT kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.li32
+/DEF:BasicMath.def, который я добавил под дополнительными опциями.
2 ответа
Извините, я это исправил. Когда я копировал командную строку в свой вопрос, я увидел /DEBUG, хотя я установил конфигурацию выпуска. Я увидел, что "Создать информацию об отладке" был случайно включен, поэтому отключил ее и перекомпилировал. Название искажается.
Спасибо за вашу помощь.
Вы действительно используете файл.def?
Можем ли мы увидеть вашу командную строку для компиляции?