Vb.net 调用C++ dll遇到的问题

Vb.net 调用C++ dll遇到的问题

问题描述:

头文件里的方法时这样的
/**
@brief 创建一个会议实例,每次调用都会获得一个新的会议实例
*@param[in] nCompentSet 需要加载的组件,参考定义\n
*CONF_PARAM_COMPONENT_AS = 0x001L,\n
*CONF_PARAM_COMPONENT_DS = 0x002L,\n
*CONF_PARAM_COMPONENT_PL = 0x004L,\n
*CONF_PARAM_COMPONENT_CB = 0x008L,\n
*CONF_PARAM_COMPONENT_RD = 0x010L,\n
*CONF_PARAM_COMPONENT_CTRL = 0x020L,\n
*CONF_PARAM_COMPONENT_CHAT = 0x040L,\n
*CONF_PARAM_COMPONENT_WHITEBOARD = 0x080L,\n
*CONF_PARAM_COMPONENT_POLLING = 0x100L,\n
*CONF_PARAM_COMPONENT_FT = 0x200L
*@return NULL 调用失败无法创建会议实例
*@return 非NULL 新创建的会议实例指针
*/
IW_API_EXPORT IWConfrence
Com_CreateConfrence(int nCompentSet);

    在Vb.net里如何接收返回值

这种返回的指针,其他语言不好直接处理,最好是用C++去调用

IWConfrence是什么,如果是结构体,在VB中定义一个一样的
然后这么写

 dim p =  Com_CreateConfrence(...) 
dim size  as integer = 结构体大小
IntPtr structPtr = Marshal.AllocHGlobal(size)
Marshal.Copy(p, 0, structPtr, size)
dim obj as 结构体 = Marshal.PtrToStructure(structPtr, new 结构体().GetType())