Искажение имени с файлом определения и внешним "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?

Можем ли мы увидеть вашу командную строку для компиляции?

Другие вопросы по тегам