dll文件的c++制作
1、首先用vs2005建立一个 c++ 的dll 动态 链接 库 文件,这时,
// DllTest.cpp : 定义 DLL 应用程序的入口点。
//
#include "stdafx.h"
//#include "DllTest.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
这段代码会自动生成,
2、自己建一个DllTest.h的头文件,和DllTest.def的块声明文件。
其中头文件是为了声明内部函数使用。块声明主要是为了在dll编译成功后固定好方法名。别忘记添加#include "DllTest.h"
3、在DllTest.h中加入如下代码
#ifndef DllTest_01
#define DllTest_01
#define EXPORT extern "C" __declspec(dllexport)
//两个参数做加法
EXPORT int _stdcall Add(int iNum1=0,int iNum2=0);
//两个参数做减法
EXPORT int _stdcall Subtraction(int iNum1=0,int iNum2=0,int iMethod=0);
#endif
4、在DllTest.def中加入如下代码
LIBRARY "DllTest"
EXPORTS
Add
Subtraction
5、在DllTest.cpp中写好代码为
// DllTest.cpp : 定义 DLL 应用程序的入口点。
//
#include "stdafx.h"
#include "DllTest.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 APIENTRY Add(int a,int b) // APIENTRY 此关键字不可少
{
return (a+b);
}
//减函数
int APIENTRY Subtraction(int a,int b,int i)
{
if(0==i)
return (a-b);
else
return (b-a);
}
6、这样编译生成就可以得到对应的DllTest.dll的文件了
二、 C#调用 dll文件
1、创建一个c#的控制台程序(当然其他也没有问题),自动生成以下代码
using System;
using System.Collections.Generic;
using System.Text;
//using System.Runtime.InteropServices;
namespace CSharpIncludeC__Dll
{
class Program
{
static void Main(string[] args)
{
}
}
}
2、添加命名空间using System.Runtime.InteropServices;
3、若要引用dll文件,首先吧dll文件自行拷贝到bin/debug,文件夹下,没有的话,先编译一下。
4、添加属性
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Add(int iNum1, int iNum2);
5、最终产生代码
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
namespace CSharpIncludeC__Dll
{
class Program
{
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Add(int iNum1, int iNum2);
[DllImport("DllTest.dll", CharSet = CharSet.Ansi)]
static extern int Subtraction(int iNum1,int iNum2,int iMethod);
static void Main(string[] args)
{
int iValue = Add(1, 2);
Console.WriteLine(iValue);
iValue = Subtraction(1, 2, 1);
Console.WriteLine(iValue);
Console.Read();
}
}
}
6、生成项目运行就可以了,结果是3和1
dll文件的c++制作相关推荐
- dll文件的c++制作dll文件的c++制作
dll文件的c++制作 1.首先用vs2005建立一个c++的dll动态链接库文件,这时, // DllTest.cpp : 定义 DLL 应用程序的入口点. // #include "st ...
- 如何用VB制作DLL文件
1.新建一个ActiveX Dll,工程名字为vbmytestdll,类模块名字为mytestdll 2.类模块内容只有一个函数,主要返回DLL的HELLO WORLD Public Functi ...
- 使用vs2008制作dll文件,生成动态链接库
转自:http://blog.csdn.net/howard_liu1314/article/details/7862326 1.制作dll文件 vs2008中,File > New P ...
- VS2019制作DLL文件
用VS2019制作DLL文件的一般步骤很简单: 1创建新项目 2找到动态链接库DLL项目 3创建 4.分别在源文件和头文件添加相关函数f.cpp,f.h 第4步中,f.cpp中是没有主函数的各个函数, ...
- vs 2017 制作Dll文件的两种方法,以及调用Dll文件的两种方法。
近来学习制作Dll文件,看了几个视频教程,看了网上的例子,看了msdn上的例子.现在做个总结,以便来日回顾,同时也希望以大家相互交流学习. 注意1:用 method 1 named "Usi ...
- 制作和unity调用动态链接库dll文件
首先用vc建立一个dll工程 然后在里面建立一个testunity.h文件.内容如下 1 extern "C" int _declspec(dllexport)testunity( ...
- 用Visual C#做DLL文件
作为软件设计和开发人员大都有过使用DLL(动态连接库)的经历,DLL的产生使得我们的应用程序在可维护性.代码的重复使用等方面都有了很大的提高.以前用的DLL一般都是用Visual C++.Delphi ...
- 计算机中丢失vcomp140.dll,Vcomp140.dll文件
Vcomp140.dll文件官方版是电脑系统中十分重要的一款系统文件.如果你的电脑中出现了"找不到vcomp140.dll 14.16.27012.6"或"vcomp14 ...
- cab文件介绍及制作方法
转自:http://bbs.pcpop.com/091030/5945399.html 1. 什么是cab文件 CAB在电脑上是一种压缩文件,微软出品的东西,用WinRAR可以解压缩,在DOS启动盘里 ...
最新文章
- Python数据分析学习文章归纳
- matlab yalmip 例程,YALMIP工具箱使用范例.pdf
- wpf里的menu怎么用_股市里的两市成交量是什么,它反映了什么,我是怎么用它来定投的...
- Linux - 搭建FastDFS分布式文件系统
- 【vlfeat】O(n)排序算法——计数排序
- VHDL六层电梯控制器及仿真
- MediatR 知多少
- anaconda2/bin/../lib/libstdc++.so.6: version `GLIBCXX_3.4.20' not found Import No module named googl
- 18张图,详解SpringBoot解析yml全流程
- Win7 XAMPP apache无法启动的问题
- 系统学习NLP(十五)--seq2seq
- ectouch2.0 php5.5_ectouch: ECTouch是一款开源的电商系统,为中小企业提供最佳的新零售解决方案。...
- TV端影视APP开发搭建需要注意哪些问题?
- 什么是 Google Play服务
- html超链接自动下划线,html超链接下划线应该加入吗?
- 怎样快速查询单号物流信息,筛选出未签收的单号
- 九月腾讯,创新工场,淘宝等公司最新面试三十题
- 仰望星星的孩子-2014年终总结
- Laravel 第十章 API测试和文档
- 单摆测重力加速度的算法(Python)
热门文章
- c语言errorinfo结构体,c结构体与文件
- bootstrap tab 模拟点击_【第七课】Bootstrap的魅力
- 蜗牛星际网卡驱动_矿渣“蜗牛星际“折腾NAS黑群晖全过程
- 为什么MCU也要支持AI功能?
- 摆摊吗?我卖锅,你修手机。
- oracle audit文件,[20191128]oracle Audit文件管理2.txt
- android复位机器人图片,安卓(Android)新图标!小绿机器人换脸啦
- linux怎么取消挂在u盘,linux下如何挂载U盘
- debug idea js_IntelliJ IDEA 配置chrome插件调试js代码 - 狂奔的熊二 - 博客园
- python的super方法_Python中“super”是做什么的?