首页 > 编程语言 >C# 调vc带回调的动态库

C# 调vc带回调的动态库

时间:2023-04-11 17:00:52浏览次数:28  
标签:vc wsClienGetMsg C# 带回 int PlatUpgrade CallingConvention static public

 

 c++ CALLBACK    也就是 不能少,不然c#对不上  #define CALLBACK    __stdcall

typedef void (CALLBACK * FUNCTION)(int iRet,char* strOut);

int wsClientMain(int iType, FUNCTION callFun);

extern "C" {
    __declspec(dllexport) int test1() {
        return 256;
    }

    __declspec(dllexport)  int wsClienGetMsg(int iType, FUNCTION callFun) {
        return wsClientMain(iType,callFun);
    }
}

C#

namespace testdlg
{
    class PlatUpgrade
    {
        public static WSCallbackFUNCTION CallFun ;

        public const string dllFile = "platformUpgradeLib.dll";
        [DllImport(dllFile, EntryPoint = "test1", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
        public static extern int test1();


        [DllImport(dllFile, EntryPoint = "wsClienGetMsg", CharSet = CharSet.Auto, CallingConvention = CallingConvention.Cdecl)]
        public static extern int wsClienGetMsg(int iType, WSCallbackFUNCTION callbackFunction);


        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
        public delegate void WSCallbackFUNCTION(int iRet, string  strOut);


        public static void myCallback_Function(int iRet, string strOut)
        {
            
            string str = "####--->" + iRet + ", " + strOut;

            //MessageBox.Show(str);
            Console.WriteLine(str);
            Program.f1.richTextBox1.Text = str;
        }

    }
}

调用时
            PlatUpgrade.CallFun = new PlatUpgrade.WSCallbackFUNCTION(PlatUpgrade.myCallback_Function);
            PlatUpgrade.wsClienGetMsg(3,PlatUpgrade.CallFun);

 

标签:vc,wsClienGetMsg,C#,带回,int,PlatUpgrade,CallingConvention,static,public
From: https://www.cnblogs.com/cnchengv/p/17306855.html

相关文章

  • AI智能安防监控EasyCVR视频融合平台播放鉴权功能的介绍及配置
    EasyCVR视频融合平台基于云边端协同架构,支持海量视频汇聚管理,在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,实现视频资源的鉴权管理、按需调阅、全网分发、智能分析等。平台可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、R......
  • C++第二章课后练习题 2-24,2-25
    编写一个完整的程序,实现功能:向用户提问“现在正在下雨吗?”,提示用户输入Y或N。若输入为Y,显示“现在正在下雨。”;若输入为N,显示“现在没有下雨。”;否则继续提问“现在正在下雨吗?”。#include<iostream>usingnamespacestd;intmain(){cout<<"现在正在下雨吗?"<<endl;......
  • Docker容器使用Flannel通信
    Docker使用Flannel跨主机通信通信的方式路由虚拟包头flannel网络概念Flannel是Docker提供的一种网络解决方案,它旨在为容器提供简单的IP地址管理和跨主机通信。Flannel使用了一些现有的技术,比如Linux内核的TUN/TAP接口和ETCD分布式键值存储,来实现容器之......
  • ipc
    目录linux进程间通讯读写1.函数apishm共享内存1.SYSV函数api2.POSIXmmap函数api3.memfd_create()函数api4.dma-buf函数apipipe匿名管道1.函数apififo命名管道1.函数apimsgq消息队列1.函数apisemaphore信号量1.SYSV函数api2.POSIX有名信号量函数api3.POSIX无名信号量函数a......
  • 批处理返回Oracle的表数据
    bat:@ECHOOFFGOTOchoice:choiceECHO===============ECHO选择要查询的系统ECHO1.准生产集中ECHO2.准生产两融ECHO3.准生产一柜通ECHO4.仿真集中ECHO5.仿真两融ECHO6.仿真一柜通ECHO===============SET/pa=输入数字:IF%a%==1GOTO1IF%a%==2GOTO2IF......
  • 如何使用Alpaca-LoRA来微调ChatGPT这样的模型?
    原文标题:HowtouseAlpaca-LoRAtofine-tuneamodellikeChatGPT原文地址:https://replicate.com/blog/fine-tune-alpaca-with-lora?continueFlag=4ecae39885197a5c008faabbefb5c824如何使用Alpaca-LoRA来微调ChatGPT这样的模型?低秩自适应(LoRA)是一种微调模型的技术,它比以......
  • collate_fn的应用教程
    作用collate_fn:即用于collate的function,用于整理数据的函数。说到整理数据,你当然要会用数据,即会用数据制作工具torch.utils.data.Dataset,虽然我们今天谈的是torch.utils.data.DataLoader。collate_fn笼统的说就是用于整理数据,通常我们不需要使用,其应用的情形是:各个数据长度不一......
  • 迁移学习()《Attract, Perturb, and Explore: Learning a Feature Alignment Network fo
    论文信息论文标题:Attract,Perturb,andExplore:LearningaFeatureAlignmentNetworkforSemi-supervisedDomainAdaptation论文作者:TaekyungKim论文来源:2020ECCV论文地址:download 论文代码:download视屏讲解:click1摘要提出了目标域内的域内差异问题。提......
  • react useMemo
    useMemo是React提供的一个用于优化组件性能的钩子函数。它可以缓存组件的计算结果,并在依赖项发生变化时重新计算。这可以避免在每次组件渲染时都重新计算相同的值,从而提高组件的性能。useMemo的语法如下:constmemoizedValue=useMemo(()=>computeExpensiveValue(a,b),......
  • flask-sqlalchemy使用,flask-migrate使用
    flask-sqlalchemy使用,flask-migrate使用flask-sqlalchemy使用集成到flask中,我们可以用sqlalchemy来做,就是比较的繁琐现在有一个第三方的flask-sqlalchemy,可以快速的集成到flask中#使用flask-sqlalchemy集成1.下载flask-sqlalchemy#pipinstallflask-sqlalchemy2.导......