Criando uma biblioteca de importação MSVC a partir de uma DLL que usa stdcall

Eu tenho uma DLL que exporta

extern "C" __declspec(dllexport) int __stdcall Foo( void );

Um despejo da dll mostra

******************************************************************************
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

******************************************************************************

Comecei com o seguinte arquivo def:

LIBRARY simple.dll 
EXPORTS
  Foo

Isso criou um arquivo lib com as seguintes exportações:

Exports
       ordinal    name
                  _Foo

Quando vinculo a esta biblioteca, o vinculador msvc reclama que não consegue encontrar _Foo @ 0. Para corrigir esse problema, adicionei um alias ao arquivo def.

LIBRARY simple.dll 
EXPORTS
  Foo
  Foo@0=Foo

O que resulta em um arquivo lib com exportações

Exports
       ordinal    name
                  _Foo
                  _Foo@0

Agora o projeto é vinculado sem nenhum problema. No entanto, quando tento executá-lo, recebo a mensagem

"O ponto de entrada do procedimento Foo @ 0 não pôde ser localizado na biblioteca de vínculo dinâmico simple.dll"

Portanto, embora eu tenha dito ao lib.exe que o Foo @ 0 é um alias para o Foo, ele ainda cria uma biblioteca de importação que tenta carregar "Foo @ 0" pelo nome.

Existe uma maneira de obter a biblioteca de importação para carregar "Foo" quando solicitei "Foo @ 0"?

Obrigado,

David

questionAnswers(1)

yourAnswerToTheQuestion