看板 C_Sharp 關於我們 聯絡資訊
小弟使用dllimport 引入廠商的API 結果出現 嘗試是讀取或寫入受保護的記憶體, 這通常表示其他記憶體毀損 C++ API int __stdcall SKQuoteLib_GetStockByNo([in] const TCHAR* lpszStockNo, [in,out] TStock* pStock) typedef struct STOCK { short m_sStockidx; // 系統自行定義的股票代碼 char m_cMarketNo; // 市場代號0x00上市;0x01上櫃;0x02期貨;0x03選擇權;0x04興櫃 char m_caStockNo[20]; // 股票代號 char m_caName[10]; // 股票名稱 int m_nOpen; // 開盤價 int m_nHigh; // 最高價 int m_nLow; // 最低價 int m_nClose; // 成交價 } TStock; 小弟的 C# [DllImport("SKQuoteLib.dll",CharSet=CharSet.Ansi)] public static extern int SKQuoteLib_GetStockByNo(string strStockNo, ref TStock stk); Status= SKQuoteLib_GetStockByNo("2330", ref stock); [StructLayout(LayoutKind.Sequential)] public struct TStock { public int Stockidx; public byte MarketNo; public string StockNo; public string StockName; public long Open; public long High; public long Low; public long Close; } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.84.234.186
KIRA0228:請教板上的大大 解答 感激不盡 06/12 06:54
tomex:C++的int是4byte,你結構裏用long(8byte),似乎不對應 06/12 11:14
tomex:請學習這篇: http://tinyurl.com/l2vvnm 06/12 11:16