看板 C_Sharp 關於我們 聯絡資訊
※ 引述《karcher (凡事量力而為)》之銘言: : 'DELB'印象中是一個定數 : 你可以去比對C++的值與C#計算出的值是否一致?? : int value = 'D' * 256 * 256 * 256 + 'E' * 256 * 256 + 'L' * 256 + 'B'; : ※ 引述《hatasum (我很可愛)》之銘言: : : 我想把c++的dll讓c#引用 : : 其中裡面有一個method : : extern "C" __declspec(dllexport) BOOL One_Method_INT(ULONG szMethod, int : : iArg, ULONG* pulReturnValue); : : 然後呼叫此方法是這樣呼叫的 : : : One_Method_INT('DELB', 1, &ulResult); : : 我在C#裡面使用DllImport來直接使用 : : [DllImport("WMIPort.dll")] : : static extern bool One_Method_INT(ulong szMethod, int iArg, UIntPtr : : pulReturnValue); : : 但是...卻卡住了 : : 我不知道在C#要怎麼設定'DELB'為ulong.......... : : 不知道大家有沒有類似的經驗??QQ : : 卡好久..... 感謝大家的協助!! 重新確認後確定'DELB'=0x44454c42 昨天可能鬼遮眼...... 但是我現在又卡住另一個問題.........QQ 我傳入 UIntPtr pulReturnValue = UIntPtr.Zero; bool result = One_Method_INT(0x44454c42, 1, pulReturnValue); 它顯示"嘗試讀取或寫入受保護的記憶體。這通常表示其他記憶體已損毀。" 如果'DELB'=0x44454c42是正確、iArg=1看起來似乎也不是問題... 那就是pulReturnValue的問題?? c++ : ULONG* pulReturnValue c# : UIntPtr pulReturnValue 不知道這樣是否為正確?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.211.38.194
lwecloud:pulReturnValue不用先allocate memory嗎? 07/27 10:58
hatasum:@@樓上 抱歉 這部分我比較不熟 可以再詳細說明嗎??^^" 07/27 11:41
lwecloud:其實C#我也是初學XD 07/27 13:58
lwecloud:只是在想說UIntPtr.Zero是否能當refernce傳給dll填值? 07/27 14:03
lwecloud:查了一下應該是可以...不過這邊是否能改用UInt32,然後 07/27 14:07
lwecloud:傳ref進去? 07/27 14:07