__ cdecl принудительный префикс с подчеркиванием

Моя компания предоставляет третьей стороне 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 и имели префикс , а не с префиксом подчеркивания ('_')?

5
задан Johan - reinstate Monica 3 June 2014 в 15:53
поделиться