不懂C++,请各位高手指点一下。
需求是需要封装一个动态库,方便C#调用C++对应结构体,该结构体也应用于静态库,代码如下:
//A.h
#ifdef DOTNET
#define TEST_STRUCT(name) [StructLayoutAttribute(LayoutKind::Sequential, Pack = 1)]\
typedef public ref struct name
#else
#define TEST_STRUCT(name) typedef struct name
#endif
TEST_STRUCT(A)
{
unsigned char Count;
B* DataList;
A()
{
Count = 0;
DataList = NULL;
}
~A()
{
if (DataList != NULL)
{
delete [] DataList;
DataList = NULL;
}
}
bool copy(char* input, unsigned long count, char* pMem, unsigned long ulMemCount)
{
DataList = new B[Count];
memcpy(DataList, &input[6], Count*8);
return true;
}
}A
```
```
我创建了一个C++ 动态库工程
代码如下:
// TestCLI.h
#include "..\A.h"
#ifndef DOTNET
#define DOTNET;
#endif
#pragma once
然后在工程内引入A.h
编译时,
B* DataList;
会报错。
应该如何改造呢?
补充一下,之所以要引用A.h,是想着两边用一套就可以满足,因为这个库是个协议库,后续要不断的往里面补充,为了方便,想着写一个.h, 然后引入两个工程中分别编译就可以了,不需要写两套那么麻烦。
有办法实现吗?