关于.net平台调用传递函数指针问题

问题描述

DLL:我使用DELPHI编写一个DLL,其中参数为一函数指针地址,该函数接收到DLL做相关处理后实现回调。windowform应用程序:我希望在.NET中将一函数指针传递进去,等DLL处理完回调我的函数。希望能够提供DEMO,分数不够可以再加!

解决方案

解决方案二:
....大概是declaer一个函数再用委托来做吧帮顶
解决方案三:
试过用委托了,调用时提示内存地址错误或损坏!
解决方案四:
unsafe下用吧/////////////
解决方案五:
请问有没有例子啊?分数不够再加!
解决方案六:
问问jinjazz,他可能知道
解决方案七:
DemopublicDelegatevoidCSharpPro(intnValue);publicvoidPro(intnValue){string="abc";}[DllImport("DEMO.dll",CharSet=CharSet.Ansi)]publicstaticexternintDEMOProc(stringparam1,CSharpProProc);DEMOProc("abcdefg",newCSharpPro(Pro));//调用。

解决方案八:
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了![DllImport(DLLName,CharSet=CharSet.Ansi)]publicstaticexternBooleanRunServer(intoutTime,intsendTime,intport,[MarshalAs(UnmanagedType.FunctionPtr)]dlBussPack485dealFunc);
解决方案九:
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了![DllImport(DLLName,CharSet=CharSet.Ansi)]publicstaticexternBooleanRunServer(intoutTime,intsendTime,intport,[MarshalAs(UnmanagedType.FunctionPtr)]dlBussPack485dealFunc);楼上这位兄弟,我试过你这种方法,但不行,不知道是不是我自己弄错,你给我一个DEMO,如果可以分就给你!
解决方案十:
知道怎么用,但这个东西不好说!情况太复杂,如果是标准的调用,估计你也不会发贴出来问了![DllImport(DLLName,CharSet=CharSet.Ansi)]publicstaticexternBooleanRunServer(intoutTime,intsendTime,intport,[MarshalAs(UnmanagedType.FunctionPtr)]dlBussPack485dealFunc);楼上这位兄弟,我试过你这种方法,但不行,不知道是不是我自己弄错,你给我一个DEMO,如果可以分就给你!
解决方案十一:
回调的话应该采用6楼的方法
解决方案十二:
这应该叫委托吧!路过学习!
解决方案十三:
TBusinessPackege=function(pack485:arrayofTMessage485;varreturnPack485:arrayofTMessage485;count:integer):integer;stdcall;(注意上面函数指针的stadcall)。functionRunServer(outTime:integer;sendTime:integer;port:integer;func:TBusinessPackege):boolean;stdcall;
解决方案十四:
看到了C#历害的一面

时间: 2024-09-07 17:15:37

关于.net平台调用传递函数指针问题的相关文章

c++传递函数指针和bind的示例_C 语言

复制代码 代码如下: #include <algorithm>class TestClass{public: int Sub(int x, int y) {  return y - x; } void InitAndTest() {  PrintWithClassMemberFunction(&TestClass::Sub);  PrintWithClassPointer(this); }  // call: PrintWithClassMemberFunction(&Test

深入理解C指针之三:指针和函数

原文:深入理解C指针之三:指针和函数 理解函数和指针的结合使用,需要理解程序栈.大部分现代的块结构语言,比如C,都用到了程序栈来支持函数的运行.调用函数时,会创建函数的栈帧并将其推到程序栈上.函数返回时,其栈帧从程序栈上弹出. 在使用函数时,有两种情况指针很有用.一种是将指针作为参数传递给函数,函数可以修改指针所引用的数据,可以高效的传递大块数据.另一种是声明函数指针. 程序的栈和堆 程序的栈和堆是C程序的重要运行时元素.程序栈是支持函数执行的内存区域,通常和堆共享一块内存区域.通常程序栈在区域

《C和C++代码精粹》——2.12 指向函数的指针

2.12 指向函数的指针 C和C++代码精粹 一个指针可以指向函数也可以指向存储的对象.下面的语句声明fp是一个指向返回值为整型(int)的函数的指针: int(*fp)( ); *ftp的圆括号是必需的,没有它的语句 int *fp( ); 将fp声明为一个返回指向整型(int)指针的函数.这就是将星号与类型声明紧密相连的方式成为逐渐受人们欢迎的方式的原因之一. int fp(); //方式说明fp()返回一个指向整型的指针(int ) 当然,这种方式建议你通常应该每条语句只声明一个实体,否则

这可能不只是一篇面经(BAT面试)

转载请标明出处:  http://blog.csdn.net/djy1992/article/details/76087532 本文出自:[奥特曼超人的博客] 文章来自牛客网   作者:xiaoteng 0. 写在之前 首先呢我的面试经历和一些面霸和收割机的大神相比绝不算丰富,但我这三个月应该能代表很大一部分人的心路历程:从无忧无虑也无知的状态,然后遭遇挫败,跌入低谷,连续数天的黑暗,慢慢调整,逼着自己不能松懈,看到改变,收获肯定,分享经历. 先大概说下自己的面试经历吧(详细的面试过程和面试题解

手把手教你写回调函数

                                        手把手教你写回调函数       手把手教你写回调函数源代码   回调函数的主要功能就是提供统一的接口以及事件的通知.如果你是从事middleware,框架,提供API编程的,那么你肯定少不了要使用回调函数. 所谓提供统一接口或者事件的通知即:当发生某一事件或者出现某一个状态之后必定会进行某种操作.但是这个操作又不能写死,不同的环境不同的程序会有不同的实现,也就是说提供接口的人不想把逻辑写死,而是由调用接口的人来实现

《基于模型的软件开发》——1.3 宝贵教训

1.3 宝贵教训 当20世纪70年代末学术界开始对对象思想反思的时候,很多蹩脚的软件已经开发出来了,多到这些蹩脚软件中存在的通用模式已经非常明显了.很多论文和文档由此而来,例如1968年Dijkstra的经典文档:"Go To Statement Considered Harmful".这些模式代表了从软件开发中获得的惨痛教训(其中有一些是刚刚触及).1.3.1 全局数据持久状态变量用于记录系统的状态,当它们为全局可访问的时候经常会在意想不到的时间或者以意想不到的方式被修改,这是一个很

C++中的值传递,引用传递及指针传递

C++的值传递,引用传递,指针传递这些概念一直是困扰C++程序员,我一直也没有一个能说清他们之间的关系通过一个简单的实例,或者说浅显的说法,找了一些相关资料,和自已的个人感受,简单介绍一下. c++中传递参数的方式有三种:传参数的值(称为值传递,简称传值),传参数的地址(称为地址传递,简称为传址),和引用传递(简称为传引用),相应的函数也就是传值调用,传址调用和传引用调用 函数定义时参数表中的参数称为形式参数,简称形参,函数调用时参数表中的参数称为实际参数,简称实参,实参和形参之间的数据传递称为

声明函数指针并实现回调

程序员常常需要实现回调.本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调.注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论). 声明函数指针 回调函数是一个程序员不能显式调用的函数:通过将回调函数的地址传给调用者从而实现调用.要实现回调,必须首先定义函数指针.尽管定义的语法有点不可思议,但如果你熟悉函数声明的一般方法,便会发现函数指针的声明与函数声明非常类似.请看下面的例子: void f():// 函数原型 上面的语句声明了一个函数

c++中的引用与指针的区别

★ 相同点: 1. 都是地址的概念: 指针指向一块内存,它的内容是所指内存的地址:引用是某块内存的别名. ★ 区别: 1. 指针是一个实体,而引用仅是个别名: 2. 引用使用时无需解引用(*),指针需要解引用: 3. 引用只能在定义时被初始化一次,之后不可变:指针可变: 引用"从一而终" ^_^ 4. 引用没有 const,指针有 const,const 的指针不可变: 5. 引用不能为空,指针可以为空: 6. "sizeof 引用"得到的是所指向的变量(对象)的大