c++写的DLL,怎么在c#中声明

c++给的接口说明是:
extern "C" __declspec(dllexport) void test6(ULONG64* baseaddr,ULONG64 pid,WCHAR* moudleName);

extern "C" __declspec(dllexport) BOOLEAN _stdcall setCard(UCHAR* strCardId, ULONG cardLen);

如何在c#里面调用这两个函数?

开始写c++:
把和项目同名的.h文件和.cpp文件清空,添加如下代码:

//在头文件中添加
#ifdef WIN32PROJECT1_EXPORTS
#define WIN32PROJECT1_API __declspec(dllexport)
#else
#define WIN32PROJECT1_API __declspec(dllimport)
#endif

extern "C" WIN32PROJECT1_API void _stdcall Add(int a,int b);

//在源文件中添加
#include "stdafx.h"
#include "Win32Project1.h"
#include

WIN32PROJECT1_API void _stdcall Add(int a,int b)
{
std::cout << a + b << std::endl;
}

[DllImport("你的c++dll")]
private static extern void test6(ref long baseaddr, long pid, StringBuilder moudleName);
[DllImport("你的c++dll")]
private static extern bool setCard( StringBuilder strCardId,long cardLen);

声明以后如何调用呢?我调用test6得时候提示第一个参数不能为空。第一个参数是我需要调用DLL获取得值。

原因可能是托管的 PInvoke 签名与非托管的目标签名不匹配。声明以后提示我这个错误。