C#新手求问如何得到c++DLL中的数组变量内容???

wangsiyuanoo 2013-08-07 04:22:10
dll中c++的代码:

struct SrvInfo
{
string strSrvAddress;
int iSrvPort;
}

SrvInfo m_arrSrvInfos[1]; //里面已经存了1个SrvInfo类型的元素

void fnGetSrvInfos( SrvInfo *pInfo, int iLen )
{
if ( NULL == pInfo )
{
return;
}
for ( int i = 0; i < iLen; ++i )
{
pInfo[i] = m_arrSrvInfos[i];
}
}


c#调用c++DLL里fnGetSrvInfos函数的代码:
[StructLayout(LayoutKind.Sequential)]
public struct SrvInfo
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 27)]
public string strSrvAddress;
int iSrvPort;
}
[DllImport("test.dll", EnrtyPoint="fnGetSrvInfos")]
public static extern void GetSrvInfos( SrvInfo[] arrSrvInfos, int iLen );

int iLen = 1;
SrvInfo[] info = new SrvInfo[iLen];
for ( int i = 0; i < info.Length; ++i )
{
info[i] = new SrvInfo();
}
GetSrvInfos( info, iLen ); //但是info没有得到C++中m_arrSrvInfos的数据 怎么办?
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
FTD_2009 2013-08-08
  • 打赏
  • 举报
回复
用ref struct or intptr
FTD_2009 2013-08-08
  • 打赏
  • 举报
回复
你可以封装之后用DllImport调用的
真相重于对错 2013-08-08
  • 打赏
  • 举报
回复
kancuole
真相重于对错 2013-08-08
  • 打赏
  • 举报
回复
而不是一个数组 用ref struct or intptr
真相重于对错 2013-08-08
  • 打赏
  • 举报
回复
SrvInfo *pInfo, 代表的是输出参数
wangsiyuanoo 2013-08-08
  • 打赏
  • 举报
回复
引用 1 楼 gomoku 的回复:

struct SrvInfo
{
    TCHAR strSrvAddress[27]; //<-- 不能用std::string 
    int iSrvPort;
};
还是不行。。。
gomoku 2013-08-08
  • 打赏
  • 举报
回复

struct SrvInfo
{
    TCHAR strSrvAddress[27]; //<-- 不能用std::string 
    int iSrvPort;
};

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧