[問題] 關於引用C++ dll的變數類別
工作上收到一份dll
他給的文件方法是
SnmpStatus(int& DeviceStatus,int& PrinterStatus,char* PrinterError);
所以我採用
[DllImport("MPrinterSnmp.dll", EntryPoint = "SnmpStatus", CallingConvention
= CallingConvention.StdCall,CharSet =CharSet.Unicode)]
public static extern int SnmpStatus(out int DeviceStatus, out int
PrinterStatus,ref StringBuilder PrinterError);
可是一呼叫 程式就直接結束工作,連例外都沒跳出
曾經有一次 把 StringBuilder改成Char有成功取得值一次
但是後來再試就一樣直接跳掉
StringBuilder 改試過 String、byte[2]、String[2]、IntPtr、char、char[2]
都是直接跳掉
另外 他有附他的.h給我 裡面的方法是
extern "C" __declspec(dllexport) int __stdcall SnmpStatus(int
&DeviceStatus,int &PrinterStatus,char *PrinterError);
*和&的位置和文件的位置有些微不一樣 不知道有沒有差別
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 60.248.154.118 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1638157851.A.621.html
→
11/29 13:02,
3年前
, 1F
11/29 13:02, 1F
IntPtr我試過 至少要先不會跳掉才有機會可以去轉String吧?
※ 編輯: ab710912 (60.248.154.118 臺灣), 11/29/2021 13:15:47
→
11/30 11:23,
3年前
, 2F
11/30 11:23, 2F
→
11/30 11:27,
3年前
, 3F
11/30 11:27, 3F
→
11/30 11:28,
3年前
, 4F
11/30 11:28, 4F
推
11/30 12:28,
3年前
, 5F
11/30 12:28, 5F
→
11/30 12:28,
3年前
, 6F
11/30 12:28, 6F
推
11/30 12:29,
3年前
, 7F
11/30 12:29, 7F
推
12/01 08:43,
3年前
, 8F
12/01 08:43, 8F
推
12/01 12:05,
3年前
, 9F
12/01 12:05, 9F
→
12/01 12:05,
3年前
, 10F
12/01 12:05, 10F
→
12/01 13:38,
3年前
, 11F
12/01 13:38, 11F
推
12/01 13:51,
3年前
, 12F
12/01 13:51, 12F
→
12/01 13:54,
3年前
, 13F
12/01 13:54, 13F
→
12/01 13:54,
3年前
, 14F
12/01 13:54, 14F
推
12/01 13:58,
3年前
, 15F
12/01 13:58, 15F
→
12/01 13:58,
3年前
, 16F
12/01 13:58, 16F
→
12/01 14:00,
3年前
, 17F
12/01 14:00, 17F
→
12/01 14:00,
3年前
, 18F
12/01 14:00, 18F
推
12/01 14:06,
3年前
, 19F
12/01 14:06, 19F
推
12/01 15:47,
3年前
, 20F
12/01 15:47, 20F
→
12/01 15:47,
3年前
, 21F
12/01 15:47, 21F
推
12/01 15:51,
3年前
, 22F
12/01 15:51, 22F
→
12/01 15:51,
3年前
, 23F
12/01 15:51, 23F
推
12/01 16:04,
3年前
, 24F
12/01 16:04, 24F
→
12/01 16:05,
3年前
, 25F
12/01 16:05, 25F
→
12/01 16:05,
3年前
, 26F
12/01 16:05, 26F
推
12/01 16:33,
3年前
, 27F
12/01 16:33, 27F
→
12/01 16:33,
3年前
, 28F
12/01 16:33, 28F
→
12/01 16:33,
3年前
, 29F
12/01 16:33, 29F
感謝各位那麼認真的討論...昨天我有嘗試成功了
原因只是改成X86建置降為.net2.0就可以過了
改成這樣後無論類型帶甚麼都可以過 只是輸出值不一定有值或不一定對就是了
最後還是用了char
public static extern int SnmpStatus(out int DeviceStatus, out int
PrinterStatus, ref char PrinterError);
這樣感覺出來跟我要的結果比較像
感謝各位
※ 編輯: ab710912 (60.248.154.118 臺灣), 12/01/2021 17:22:07
※ 編輯: ab710912 (60.248.154.118 臺灣), 12/01/2021 17:22:57
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章