Exportar funções de uma DLL com dllexport

Gostaria de um exemplo simples de exportar uma função de uma DLL do Windows em C +

Gostaria de ver o cabeçalho, o arquivo cpp e o arquivo def (se for absolutamente necessário

Gostaria que o nome exportado fosse não decorado. Eu gostaria de usar a convenção de chamada mais padrão (__stdcall?). Eu gostaria do uso__ declspec (dllexport) e não precisa usar um arquivo DE

Por exemplo

  //header
  extern "C"
  {
   __declspec(dllexport) int __stdcall foo(long bar);
  }

  //cpp
  int __stdcall foo(long bar)
  {
    return 0;
  }

Estou tentando evitar que o vinculador adicione sublinhados e / ou números (contagem de bytes?) Ao nom

Eu estou bem em não suportar dllimport e dllexport usando o mesmo cabeçalho. Não quero nenhuma informação sobre a exportação de métodos de classe C ++, apenas funções globais do estilo

ATUALIZA

Não incluindo a convenção de chamada (e usando extern "C") me fornece os nomes de exportação como eu gosto, mas o que isso significa? É qualquer convenção de chamada padrão que eu esteja recebendo o que o pinvoke (.NET), declare (vb6) e GetProcAddress esperariam? (Acho que, para GetProcAddress, isso dependeria do ponteiro de função que o chamador criou

Eu quero que essa DLL seja usada sem um arquivo de cabeçalho, por isso não preciso de muitas definições sofisticadas para tornar o cabeçalho utilizável por um chamado

Estou bem com uma resposta, pois preciso usar um arquivo DE

questionAnswers(4)

yourAnswerToTheQuestion