C++封装dll并用C#调用(范例),解决C#调用C++的dll找不到入口点异常

实现以下功能:C++读写剪切板,封装为dll,并用C#调用,实现读写剪切板。


第一部分,C++代码:

#include
#include  
#include

extern "C"  __declspec(dllexport) void SetString(char * text, int size)
{
	OpenClipboard(NULL);//打开剪切板  
	EmptyClipboard();//清空剪切板  
	HANDLE handle = GlobalAlloc(GMEM_FIXED, size);//分配内存  
	char* clip = (char*)GlobalLock(handle);//锁定内存,返回申请内存的首地址  
	strcpy_s(clip, size, text);//复制文本到内存地址
	SetClipboardData(CF_TEXT, handle);//设置剪切板数据  
	GlobalUnlock(handle);//解除锁定  
	CloseClipboard();//关闭剪切板
}

extern "C" __declspec(dllexport) char* GetString()
{
	char * text = NULL;
	OpenClipboard(NULL);//打开剪切板  
	if (IsClipboardFormatAvailable(CF_TEXT))
	{
		HANDLE handle = GetClipboardData(CF_TEXT);//获取剪切板数据  
		text = (char*)GlobalLock(handle);//锁定内存,返回申请内存的首地址  
		GlobalUnlock(handle);//解除锁定  
	}
	CloseClipboard();//关闭剪切板  
	return text;
}

void main(){
	char * text = "中国制造,惠及全球";
	SetString(text, 100);
	printf(GetString());
	getchar();
}

第二部分,C++编译为dll:

C++封装dll并用C#调用(范例),解决C#调用C++的dll找不到入口点异常_第1张图片


第三部分,C#调用:

        [DllImport("Clipboard.dll")]
        public static extern void SetString(string text, int size);

        [DllImport("Clipboard.dll")]
        public static extern string GetString();


你可能感兴趣的:(C++封装dll并用C#调用(范例),解决C#调用C++的dll找不到入口点异常)