首页 > 编程语言 >DEV C++创建64位DLL,再用C#调用入门测试

DEV C++创建64位DLL,再用C#调用入门测试

时间:2022-09-29 10:14:17浏览次数:47  
标签:add1 C# DLLIMPORT C++ DLL int 64 DEV

1. DEV C++创建64位DLL

    DEV C++ 新建--项目--dll--选择C项目---确定

    C文件中添加  

 1 #include "devdll.h"
 2 #include <windows.h>
 3 /* 在程序中添加两个函数 ,原程序中其他部分可以不变 ,也可以把
 4           DLLIMPORT void HelloWorld() 函数删除
 5 */
 6 DLLIMPORT int add1(int a,int b)
 7 {
 8     return a+b;
 9 }
10 
11 DLLIMPORT int add2(int a,int b)
12 {
13     return add1(a,b)+add1(a,b);
14 }

  头文件(.h)中添加  

 1 #ifndef _DLL_H_
 2 #define _DLL_H_
 3 
 4 #if BUILDING_DLL
 5 #define DLLIMPORT __declspec(dllexport)
 6 #else
 7 #define DLLIMPORT __declspec(dllimport)
 8 #endif
 9 DLLIMPORT void HelloWorld();
10 /* 上面的部分为自动生成,不管它 */
11 DLLIMPORT int add1(int a,int b);
12 DLLIMPORT int add2(int a,int b); 
13 #endif

 编译时注意,红线圈住的部分 64-bits

    

2. 在VC#中添加:

    using System.Runtime.InteropServices; 

 1  [DllImport("devdll.dll", CallingConvention = CallingConvention.Cdecl)]
 2         static extern int add1(int a, int b);
 3         [DllImport("devdll.dll", CallingConvention = CallingConvention.Cdecl)]
 4         static extern int add2(int a, int b);
 5         static void Main(string[] args)
 6         {
 7             int c =  add1(3,5);
 8             int d = add2(3, 5);
 9             Console.WriteLine(c);
10             Console.WriteLine(d);
11             Console.ReadKey();
12         }

  编译时注意选择 64位编译

 

 

 

 

 

标签:add1,C#,DLLIMPORT,C++,DLL,int,64,DEV
From: https://www.cnblogs.com/zshtt/p/16740480.html

相关文章

  • git commit之后,回退方法
     原文 写完代码后,我们一般这样gitadd.//添加所有文件gitcommit-m"本功能全部完成" 执行完commit后,想撤回commit,怎么办? 这样凉拌:gitreset--softHE......
  • C#中的简单DBHelper类
    publicclassDBHelper{//创建数据库连接字符串publicstaticstringconstr="server=.;database=你的数据库名称;Uid=数据库登录用户名;pwd=数据库登录密码";//......
  • 【随手记录】docker报错Cannot create container for service xxx-app: mkdir /xxx/ov
    项目服务器启动镜像时候报错Cannotcreatecontainerforservicexxx-app:mkdir/xxx/overlay2/xx-init:nospaceleftondevice但是前几天刚加的2T磁盘,不应该满了......
  • MyEclipse技术深度剖析——企业级的Java EE & Jakarta EE IDE
    MyEclipse 是一个功能强大的JavaEEIDE和JakartaEEIDE,它支持快速开发可部署在各种应用程序服务器上的企业级应用程序。内置生产力工具使开发过程更加高效,包括用于Web......
  • 实验2:Open vSwitch虚拟交换机实践
    实验2:OpenvSwitch虚拟交换机实践一、实验目的能够对OpenvSwitch进行基本操作;能够通过命令行终端使用OVS命令操作OpenvSwitch交换机,管理流表;能够通过Mininet的Pytho......
  • ansible启动/停止tomcat
    1、主程序catsend.yaml----name:"tomcat发布war包"hosts:tomcat_modulevars_files:vars_module/war_module.yamlgather_facts:notasks:-name:"war包部......
  • ActiveMQ的最简单应用-队列消息
    有一段时间不使用JMS了。现在的项目又有可能需要应用JMS,来提高服务质量和提高系统资源的利用率。提高服务质量,主要是保证不间断的服务。用JMS服务器接收任务,排成队列。应用......
  • 4类 JavaScript 内存泄露及如何避免
    译者|涂鸦码龙译文|http://jinlong.github.io/2016/05/01/4-Types-of-Memory-Leaks-in-JavaScript-and-How-to-Get-Rid-Of-Them/index.html简介内存泄露是每个开发者最......
  • UMLChina建模竞赛第3赛季第1轮-列举软件开发中的“遮羞布”
    ​​软件方法(下)分析和设计第8章连载[20210723更新]>>​​人为了遮掩某些容易被人批评的东西,会有意无意地做出一些事情来“遮羞”。例如,考生知道自己不努力学习,肯定考不好,可......
  • Nacos配置管理
    回到SpringCloud##四、Nacos配置管理Nacos除了可以做注册中心,同样可以做配置管理来使用。1.1.统一配置管理当微服务部署的实例越来越多,达到数十、数百时,逐个修改微服......