Экспортировать функцию с именем в стиле c?

#d

#d

Вопрос:

Так что в Windows, на C, я мог бы сделать так

 void (*add)(int,int) = GetProcAddress(hDlangMod, "add");
add(422,244);
  

Ответ №1:

Вы можете добавить extern (C) , чтобы удалить искажение имени, если это то, что вы хотите, имейте в виду, что это удалит некоторые функции, такие как перегрузка на стороне общего доступа, но если вам нужна функция, легко доступная из C, это отличное решение! Вы можете прочитать больше об этом и других методах в https://dlang.org/spec/interfaceToC.html

TLDR: просто определите ее как extern (C) void GetProcAddress(your params here) и свяжите соответствующим образом, и она будет работать.

Примечание: Ту же extern директиву можно использовать для импорта символов из C или экспорта в C , а также для других языков и применений, это довольно полезный инструмент! Например: https://dlang.org/spec/cpp_interface.html