Моя компания предоставляет сторонней организации DLL, которая предоставляет им функции API, которые они могут использовать для подключения к нашему приложению.DLL была написана на VC9, а функции API использовали соглашение о вызовах по умолчанию VC (__cdecl).Сторонние разработчики построили свое приложение на этом интерфейсе.
Теперь мне поручено написать обновленную версию DLL.Мы хотим, чтобы у DLL был точно такой же интерфейс, что и у старого, чтобы их можно было использовать взаимозаменяемо.К сожалению, наша среда разработки теперь CodeGear RAD Studio 2007, поэтому мне нужно написать DLL-библиотеку, используя это.
Наилучшим решением было бы заставить как старые, так и новые DLL экспортировать свои функции как __stdcall.После этого стороннее приложение может быть повторно связано с ожиданием функций __stdcall, и все будут счастливы.К сожалению, по разным причинам это вряд ли произойдет.
Кроме того, я могу объявить функции в моей DLL как __cdecl.Сторонний ожидает функции __cdecl, так что это может показаться хорошим решением.К сожалению, CodeGear настаивает на добавлении подчеркивания ('_') к имени функций __cdecl.Это означает, что стороннее приложение должно было бы выполнить условный вызов MyApiFunction(...)
или _MyApiFunction(...)
, в зависимости от того, какую DLL они используют.
Итак, мой вопрос, как я могу экспортировать функции API из моего новогоDLL таким образом, что они __cdecl и не с префиксом подчеркивания ('_')?