Я пытался экспортировать функцию как символ, который содержит @
, используя как файл DEF, так и #pragma comment(linker, "/export:NEW_NAME=OLD_NAME")
, но, к сожалению, кажется, что при использовании DEF-файла интерпретируется @
как дать порядковый номер.
#pragma comment(linker, "/export:foo@bar=foo")
void foo() { }
Когда я запускаю полученный бинарный файл через dumpbin /exports
, я получаю:
ordinal hint RVA name
1 0 00001000 foo = foo (...)
Это кажется связанным, но на фактический вопрос так и не был дан ответ: Visual C ++: экспорт оформленного имени функции в файл определения
Справочная информация
Фактическая цель - предоставить функцию F (здесь foo()
) под альтернативой, __stdcall
-декорация, имя S (здесь foo@bar
).Проблема в том, что старая библиотека L1 У меня нет доступа к исходному коду, так как мне нужен этот символ S , который технически все еще предоставляется, но как функция F .Реализация S , а затем цепной вызов F нетривиальна, так как мне нужно было бы позвонить F изнутри S , но взаголовок F существует функция S , но она больше не экспортируется, поэтому при компиляции у меня будет конфликтующее определение.
Лучше всего простосоздать псевдоним от S до F .