C#与C++有多种传值方式,通常用的有.com接口和直接通过pInvoke调用c++生成dll的方式。
写出我以前的一个传值测试代码,c++代码部分
<pre name="code" class="cpp">#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct TReuseModuleStr{
char *str;
void *strPtr;
int strlen;
TReuseModuleStr():str(NULL),strPtr(NULL),strlen(0)
{
}
};
struct tagvector_st{
int dimension;
char str[20];
TReuseModuleStr mystr;
void test()
{
sprintf(str,"%d",dimension);
}
};
struct myS
{
int id;
int len;
tagvector_st *Ver;
};
#define REUSEMODULE_API extern "C" __declspec(dllexport)
#define REUSEMODULE_CALL __stdcall
REUSEMODULE_API myS REUSEMODULE_CALL returnVal()
{
myS *tmp = new myS();
tmp->id= 20;
tmp->Ver = new tagvector_st[20];
for(int count=0; count<20; count++)
{
tmp->Ver[count].dimension=