作者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
1F:→ KIRA0228:请教板上的大大 解答 感激不尽 06/12 06:54
2F:推 tomex:C++的int是4byte,你结构里用long(8byte),似乎不对应 06/12 11:14