Мне нужен простой пример экспорта функции из DLL С++ windows.
Я бы хотел увидеть заголовок, файл cpp и файл def (если это абсолютно необходимо).
Я бы хотел, чтобы экспортированное имя было undecorated. Я хотел бы использовать наиболее стандартное соглашение о вызове (__stdcall?). Мне бы хотелось использовать __ declspec (dllexport) и не использовать DEF файл.
Например:
//header
extern "C"
{
__declspec(dllexport) int __stdcall foo(long bar);
}
//cpp
int __stdcall foo(long bar)
{
return 0;
}
Я пытаюсь избежать компоновщика добавленных подчеркиваний и/или чисел (количество байтов?) на имя.
Я в порядке, не поддерживая dllimport и dllexport, используя тот же заголовок. Мне не нужна информация об экспорте методов класса С++, а также глобальные функции c-style.
UPDATE
Не включая соглашение о вызове (и использование extern "C" ) дает мне имена экспорта, как мне нравится, но что это значит? Является ли какое-либо соглашение по умолчанию по умолчанию я получаю то, что pinvoke (.NET), declare (vb6) и GetProcAddress будет ожидать? (Я думаю, что для GetProcAddress это будет зависеть от указателя функции, созданного вызывающим).
Я хочу, чтобы эта DLL использовалась без файла заголовка, поэтому мне действительно не нужно много фантастических #defines, чтобы заголовок мог использоваться вызывающим.
Я в порядке с ответом, что мне нужно использовать файл DEF.