c 函数作形参 的例子, C#调用
来源:互联网 发布:淘宝床上用品货源 编辑:程序博客网 时间:2024/05/17 12:01
/* Type for main function. */
typedef int (*pj_main_func_ptr)(int argc, char *argv[]);
作为形参数
int pj_run_app(pj_main_func_ptr main_func, int argc, char *argv[],
unsigned flags);
static int main_func(int argc, char *argv[])
{
setup_socket_signal();
do {
app_restart = PJ_FALSE;
if (app_init(argc, argv) != PJ_SUCCESS)
return 1;
setup_signal_handler();
app_main();
app_destroy();
/* This is on purpose */
app_destroy();
} while (app_restart);
return 0;
}
//传实参数
int main(int argc, char *argv[])
return pj_run_app(&main_func, argc, argv, 0);
}
========================================================================================================
//header files
typedef void (* itemnotify)(int itemno,int value);
itemnotify m_itemnotify;
#ifdef __cplusplus
extern "C" {
#endif
#define _EXPORT_IMPORT_SERIALCOMM_ __declspec(dllexport)
_EXPORT_IMPORT_SERIALCOMM_ int Add(int a ,int b );
_EXPORT_IMPORT_SERIALCOMM_ void SetNotifyCallback( itemnotify notify );
_EXPORT_IMPORT_SERIALCOMM_ void Start( );
}
// 这是主 DLL 文件。
#include "stdafx.h"
#include "ExportTest.h"
#ifdef _MANAGED
#pragma managed(push, off)
#endif
BOOL APIENTRY DllMain( HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
#ifdef _MANAGED
#pragma managed(pop)
#endif
int Add(int a ,int b )
{
return a+b;
}
void Start()
{
if (m_itemnotify==NULL)
return ;
int num=100;
while (num>0)
{
int item_value= rand() ;
m_itemnotify(num,item_value);
Sleep(20);
num--;
}
}
void SetNotifyCallback( itemnotify lpnotify )
{
m_itemnotify=lpnotify;
}
// C# 委托函数定义
[DllImport("ExportTest.dll")]
public static extern int Add(int a, int b);
[DllImport("ExportTest.dll")]
public static extern void SetNotifyCallback(NotifyCallback lpNotifyCallback);
[DllImport("ExportTest.dll")]
public static extern void Start();
unsafe public delegate void NotifyCallback(int itemNo, int itemValue);
NotifyCallback m_NotifyCallback;
private void button2_Click(object sender, EventArgs e)
{
m_NotifyCallback = new NotifyCallback(Notify);
SetNotifyCallback(m_NotifyCallback);
Start();
}
private void Notify(int itemNo, int itemValue)
{
ListViewItem item=listView1.Items.Add(itemNo.ToString());
item.SubItems.Add(itemValue.ToString());
}
- c 函数作形参 的例子, C#调用
- C#调用C++DLL例子
- C#下调用C写的dll的例子
- C#调用C函数的方法
- 嵌入式汇编语言调用C语言函数的小例子
- lua5.2调用c函数成功的例子
- C#异步调用的例子
- C#异步调用的例子
- c#调用tensorflow的例子
- PHP调用C函数简单例子
- c#调用c++的导出函数
- 在C#中调用C++Dll函数的方法
- 关于C语言调用Unity3d C#函数的方法
- Lua结合C#调用C++或者C的函数
- c语言中函数的嵌套调用(关于函数声明的一个例子)
- C#调用C++/C库中的函数
- [.NET]c#调用DLL类中成员函数的一个例子
- java 调用C# webService的例子
- Codeforces Problemset 98D(#78 div.1 D)
- 如果要重复的间隔一段固定的时间做同一件事, 如何提醒自己来做这机械的事呢?
- java中的单例模式
- 链式堆栈实现
- Codeforces Problemset 98C(#78 div.1 C)
- c 函数作形参 的例子, C#调用
- linux platform
- CA 解密系统原理及流程
- 一个小标记
- 一种扩展总线的方法
- Spring整合iBatis之一:整合中遇到的异常总结
- 这其实是个励志故事,告诉我们只要坚持,再烂的程序员都可以写到亿级别的项目的
- 分享一个分析的rtsp流媒体的问题
- 【设计模式】抽象工厂模式