C#调用C++ dll,并向调用的函数传递“函数指针”
2015-01-27 19:23
363 查看
SocketBLL(C++dll项目):
BLL.h文件:
BLL.cpp文件:
ConsoleServer(C#项目):
Program.cs文件:
命名空间:using System.Runtime.InteropServices;
参考:http://blog.chinaunix.net/uid-27226595-id-3463788.html [简介:C#与C++交互,利用PInvoke实现直接调用,基本数据类型、指针、函数指针、结构体的传递]
BLL.h文件:
#pragma once #include <Windows.h> typedef void(*MsgManagement)(int); MsgManagement MsgManage; HANDLE h; DWORD WINAPI RecieveTransientMsg(LPVOID pParam); extern "C" _declspec(dllexport) void _stdcall Start(MsgManagement p); extern "C" _declspec(dllexport) void _stdcall Wait();
BLL.cpp文件:
#include "BLL.h" DWORD WINAPI RecieveTransientMsg(LPVOID pParam) { ((MsgManagement)pParam)(2); return 0; } extern "C" _declspec(dllexport) void _stdcall Start(MsgManagement p) { h = CreateThread(NULL, 0, RecieveTransientMsg, p, 0, NULL); } extern "C" _declspec(dllexport) void _stdcall Wait() { ::WaitForSingleObject(h,INFINITE); }
ConsoleServer(C#项目):
Program.cs文件:
命名空间:using System.Runtime.InteropServices;
class Program { public delegate void MsgManagement(int t); [DllImport("SocketBLL.dll")] public extern static void Start(MsgManagement callback); [DllImport("SocketBLL.dll")] public extern static void Wait(); static void myCout(int i) { Console.WriteLine(i); } static MsgManagement callback; static void Main(string[] args) { callback = myCout; Start(myCout); Wait(); Console.WriteLine(1); return; } }
参考:http://blog.chinaunix.net/uid-27226595-id-3463788.html [简介:C#与C++交互,利用PInvoke实现直接调用,基本数据类型、指针、函数指针、结构体的传递]
相关文章推荐
- C# 调用 C++ dll 函数 时传递字符串 需要注意的问题(zz)
- C#调用C++写的dll 函数传递参数问题,请有经验的人详细描述
- C# 调用 C++ dll 函数 时传递字符串 需要注意的问题
- C# 调用 C++ dll 函数 时传递字符串 需要注意的问题
- C#调用C++dll 结构体参数传递问题
- 关于C#中调用C++dll传递回调函数的问题
- C# 调用C++DLL传递指向指针的指针参数的方法
- C#调用C++dll 结构体参数传递问题
- C# 调用Dll中非托管C++代码时,函数参数的类型对照
- CE下,c#调用c++DLL字符串传递
- C#用委托调用C++写的dll里面的函数指针
- C#调用C++动态链接库中的函数指针与函数指针结构
- C# 调用C++DLL传递的bool型,返回混乱
- C# 调用Dll中非托管C++代码时,函数参数的类型对照
- C#与DLL和COM的混合编程(1)-C#调用C++写的非托管的DLL中导出的函数
- 函数调用,C# 调用Dll中非托管C++代码时,函数参数的类型对照
- C#程序调用C++写的dll传递string出现bad ptr
- C#调用c++的dll,结构体数组作为引用参数的传递方式
- C#中调用C++的dll的参数为指针类型的导出函数