[問題] C# 使用 C++ DLL 的問題
大家好
在下這幾天有爬文,弄出一個執行到一半但會當掉的樣本出來
麻煩大家鑑定一下是哪邊出了錯,謝謝。
※C++端的DLL函式是:
#define DLL_DEC_1_API __declspec(dllexport)
extern "C" DLL_DEC_1_API int __cdecl fnDLL_Dec_1 (int a, int b, int *&c);
主要的功能就是將c這個call by reference 的 sizeof(int)*3 的指標空間
依序存入{a, b, a+b}
有另外寫一個C來測試是ok的。
※ C#端就頭痛了:
我把程式PO上來請大家看看
namespace CS_Dec_1
{
public partial class Form1 : Form
{
public
int[] c = new int[3] {0, 0, 0};
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
CDllcaller.Program.fnDLL_Dec_1(1, 2, c);
}
}
}
namespace CDllcaller
{
class Program
{
[DllImport("DLL_Dec_1.dll")]
public static extern int fnDLL_Dec_1(int a, int b, int[] c);
}
}
嗯,就是跑到這邊往上數12行的:CDllcaller.Program.fnDLL_Dec_1(1, 2, c);
系統就會跳出以下訊息 T_T
類型 'System.AccessViolationException' 的未處理例外狀況發生於 CS_Dec_1.exe
其他資訊: 嘗試讀取或寫入受保護的記憶體。這通常表示其他記憶體已損毀。
DLL用C++ call是完全沒問題的,但究竟C#這邊是哪裡寫錯呢?
拜託了大家,希望看看笑笑後可以提點一下,謝謝。
( ̄▽ ̄#)﹏﹏
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.168.155.141
→
12/18 07:07, , 1F
12/18 07:07, 1F
推
12/19 03:19, , 2F
12/19 03:19, 2F