作者KIRA0228 (萬般帶不走)
看板C_Sharp
標題[問題] DllImport
時間Fri Jun 12 06:54:11 2009
小弟使用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