Yerel C++ DLL dosyasını bir C# DLL dosyasına dönüştürüyorum. C/C++ 'da pek kabul görmedim, ancak bu sorun üzerinde sıkışıp kalana kadar çalışmayı başardım. İşte çok basit kod örnek:C# P/Invoke: yerel çıkış parametresi değeri yönetilen kodlara ulaşmaz
C++
C#[DllImport("ProAsaNativeDll.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void outTest(ref int number);
public static int OutTest()
{
int number = 2;
outTest(ref number);
return number; //number = 2
}
benim gerçek senaryo olduğumu fark edin, bu bir işaretçi ile çalışmak için almaya çalışıyorum
PROASADLL __declspec(dllexport) void outTest(int* number){
int temp = *number + 10;
number = &temp; //*number = 12
}
struct için işaretçi ama ben bir marshalling sorun olarak dışarıda bırakmaya karar verdim; Bu basit kod bile işe yaramaz. C++ kodu işe yarıyor ama ben aptallık ve orada bir problem yaşamaya karar vermezdim: dediğim gibi çok C/C++ bilmiyorum.
C# sarmalayıcı yöntemindeki sayı değişkeni değeri değişmeyecektir. Lütfen yardım et.
Kötü C++ kodu. Bu onu sıkarken daha iyi olmaz. Önce bir C++ test programından çalışmasını sağlayın. –