C - DLL должен быть __STCALL и импорт __cdecl lib
Вопрос
Я собираю DLL, которая должна использовать Portaudio.Он использует всевозможные библиотеки Windows для розеток и такого, но линкер не распознает библиотеку Portaudio.Затем я вспомнил Portaudio использует __cdcel вместо __STDCall.Обычно я бы просто использовал __CDCECL и сделать с ним, но DLL, которую я собираюсь, необходимо использовать __STCall, потому что я собираюсь использовать его с Visual Basic.
И если этот проект звучит как немного клюде к вам, оно есть.
Решение
Глупо меня!Все, что мне нужно сделать, это использовать __CDCECL и объявить экспортированные функции как __STDCall!
Другие советы
Я предполагаю, что вам нужно использовать __CDECL, потому что Portaudio будет вызывать некоторые ваши функции?Затем создайте внутреннюю функцию, объявленную __CDECL, передайте эту функцию в Portaudio и предоставить экспортированную функцию (объявленную __Stcall), которая вызывает вашу внутреннюю функцию.
Но я догадываюсь на то, что вы пытаетесь сделать, вы должны предоставить больше информации.