Создание библиотеки импорта MSVC из библиотеки DLL, которая использует stdcall
У меня есть dll, которая экспортирует
extern "C" __declspec(dllexport) int __stdcall Foo( void );
Свалка длл показывает
******************************************************************************
Section: Exports
File Offset: 00001400 (5120)
Flags: 00000000
Time Stamp: 00000000
Major Version: 0000
Minor Version: 0000
Exports from simple.dll
3 exported name(s), 3 export addresse(s). Ordinal base is 1.
Sorted by Name:
RVA Ord. Hint Name
-------- ---- ---- ----
00002104 3 0000 std::nothrow
00001258 2 0001 Foo
000020F8 1 0002 ___CPPdebugHook
******************************************************************************
Я начал со следующего файла def:
LIBRARY simple.dll
EXPORTS
Foo
Это создало файл lib со следующим экспортом:
Exports
ordinal name
_Foo
Когда я связываюсь с этой библиотекой, компоновщик msvc жалуется, что не может найти _Foo @ 0. Чтобы исправить эту проблему, я добавил псевдоним в файл def.
LIBRARY simple.dll
EXPORTS
Foo
Foo@0=Foo
В результате получается файл lib с экспортом
Exports
ordinal name
_Foo
_Foo@0
Теперь ссылки на проект без проблем. Однако, когда я пытаюсь запустить его, я получаю сообщение
"Не удалось найти точку входа в процедуру Foo @ 0 в библиотеке динамических ссылок simple.dll"
Таким образом, похоже, что хотя я сказал lib.exe, что Foo @ 0 является псевдонимом для Foo, он все равно создает библиотеку импорта, которая пытается загрузить «Foo @ 0» по имени.
Есть ли способ получить библиотеку импорта для загрузки "Foo", когда я спросил "Foo @ 0"?
Спасибо,
Дэвид