看板 C_Sharp 關於我們 聯絡資訊
我想在C#裡叫用dll的時候 一起傳兩個參數(type:sring)過去 =====C#====== [DllImport("0910.dll"] public static extern void openimage(string input, string output); private void button3_Click(object sender, EventArgs e) { string input = "lena.raw"; string output = "output.raw"; openimage(input, output); } =====dll===== char input[20], output[20]; BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { openimage(input, output); return TRUE; } extern "C" _declspec(dllexport) void _stdcall openimage( char input[], char output[]) { int i, j, k; fileinput=fopen(input, "rb"); fileoutput=fopen(output, "wb"); //....省略........ //....處理影像的步驟 fcloseall(); } 執行的時候會發生以下的錯誤: 正在OS載入器鎖定內城市Managed執行.請勿嘗試在DllMain或影像初 始設定函式內部執行Managed程式碼,因為這樣做可能導致應用程式停 止回應. 請問這是什麼原因!?又該如何解決呢!? 如果不傳參數做的話 可以有正確的結果 但是傳參數的話就... 因為專題的關係才開始接觸dll 去網路上看了很多資料還是沒有結果 問了很笨的問題還請大家多多包含捏~>///< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.130.189.21 ※ 編輯: gugu917 來自: 140.130.189.21 (09/10 20:07)
mjmjttn:到這看 http://0rz.tw/ae33r 把 string 換成byte試試 09/11 09:23
mjmjttn:可以用 Encoding.ascii.getbyte 09/11 09:23