У меня есть старая DLL (Borland Builder 2006 C ++), которую я хочу использовать в .Net C # Visual Studio 2010. Когда я пытаюсь импортировать функции в VS всегда, я получаю исключение StackOverflowException из Visual Studio.Я уже прочитал много вещей, и импорт, кажется, легко.Но я терплю неудачу и не вижу свою ошибку.
В DLL-библиотеке Borland функции экспортируются как:
__declspec(dllexport) void TestFunc1()
или extern "C" __declspec(dllexport) void __stdcall TestFunc2()
Декорированные имена (файл * .DEF, созданный с помощью impdef и проверенный с помощью обходчика зависимостей):
@TestFunc1$qqsv
TestFunc2
В Visual Studio я импортирую таким образом:
[DllImport("MyDllName.dll", EntryPoint = "@TestFunc1$qqsv", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
public static extern void TestFunc1();
[DllImport("MyDllName.dll",CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall, CharSet = CharSet.Auto, SetLastError = true)]
public static extern void TestFunc2();
В случаях стендов выдается исключение StackOverflowException из Visual studio, когда яЗвоните:
MyImport_Unmanaged.TestFunc1()
или MyImport_Unmanaged.TestFunc2()
Что не так?Кто-нибудь может мне помочь?
Интересно, когда я импортирую старую DLL, созданную в Visual Studio C ++, оформленное имя функции: _TestFunc1@0
.Название довольно сильно отличается от названий Borland, но работает.