当前位置: 首页 > news >正文

石家庄开发网站建设青岛 外语网站建设

石家庄开发网站建设,青岛 外语网站建设,上海论坛网站建设,wordpress 正在解压缩安装包前面我们介绍了dll的生成#xff0c;大多数是使用extern C__declspec(dllexport)函数名的方法导出dll。其实我们还有另一种方法来导出dll。 先介绍参考文献#xff1a; 1.dll导出声明相关 2.VS2012中 C创建DLL图解 3.DLL中导出函数的两种方式(dllexport与.…前面我们介绍了dll的生成大多数是使用extern C__declspec(dllexport)函数名的方法导出dll。其实我们还有另一种方法来导出dll。 先介绍参考文献 1.dll导出声明相关 2.VS2012中 C创建DLL图解 3.DLL中导出函数的两种方式(dllexport与.def文件) 4 按序号而不是按名称从 DLL 导出函数 5.模块定义 (.Def) 文件 6.VS2010中 C创建DLL图解    :介绍了如何定义def文件 7.MS VS只生成dll,不生成lib 8.VS中def文件对于生成dll和lib文件的作用 然后 我们可以重点读一下3和6.即可。8中指出其实def文件的功能相当于extern “C” __declspec(dllexport) 我这里给出一个例子点击下载。证明了此处话的正确性。 贴出代码为 testdll.h #ifndef TestDll_H_ #define TestDll_H_extern C {int Add(int plus1, int plus2);int substract(int a); }#endifspan stylecolor:#ff0000;strong /strong/span .cpp // NewDLL.cpp : 定义 DLL 应用程序的导出函数。 //#include stdafx.h #include testdll.h #include iostream using namespace std; int Add(int plus1, int plus2) {int add_result plus1 plus2;return add_result; }int substract(int a) {return a; } 调用dll: #include Windows.h #include iostream #include testdll.htypedef int(*Func)(int, int);#pragma comment(lib,NewDLL.lib)int main() {HMODULE Hdll LoadLibrary(NewDLL.dll);if (Hdll ! nullptr){Func f Func(GetProcAddress(Hdll, MAKEINTRESOURCE(2)));if (f ! nullptr){std::cout input 2 num:;int a, b;std::cin a b;std::cout result is Add(a, b);}else{std::cout connot find the function add std::endl;}FreeLibrary(Hdll);}else{std::cout cannot load dll NewDLL.dll std::endl;}system(pause);return 0; } def定义为 LIBRARY NewDLL EXPORTS Add 2 NONAME substract 1 NONAME 注意 1. 我们要将dll的头文件、lib文件都在调用的项目中指明。而且在生成dll的项目中def要指明 选择工程 属性中的链接器然后找到输入这一项. 在 模块定义文件 中输入  ***.def 2. def文件中指明了函数的顺序并且函数使用 c风格生成这可以使我们在显式调用时直接使用函数名或者序号来调用。我们也可以为了节省内存将函数名去掉使用NONAME属性即可。可参考文献4.上面我们生成的dll就没有函数名我们可使用dumpbin查看 可以看到使用def就可以基本不用改变头文件中的函数我们手动的在def中指明。而且如果你的DLL是提供给VC用户使用的你只需要把编译DLL时产生的.lib提供给用户 它可以很轻松地调用你的DLL。但是如果你的DLL是供VB、PB、Delphi用户使用的那么会产生一个小麻烦。 因为VC编译器对于__declspec(dllexport)声明的函数会进行名称转换如下面的函数 __declspec(dllexport) int __stdcall Add() 会转换为Add0这样你在VB中必须这样声明 Declare Function Add Lib DLLTestDef.dll Alias Add0 () As Long 后面的数由于参数类型不同而可能不同。这显然不太方便。所以如果要想避免这种转换就要使用.def文件方式导出函数了。
http://www.zqtcl.cn/news/967400/

相关文章:

  • 网站建设需求分析调研表建筑品牌网站
  • html5商城网站如何查询网站建设者
  • 做重视频网站教育网站改版方案
  • 小网站谁有网站上线后做什么
  • 松江网站建设培训手机网站你们
  • 荆州网站建设 众火网北京小客车指标调控管理信息系统
  • 域名和网站一样吗自己开发小程序要多少钱
  • 咨询公司网站源码手机优化软件哪个好用
  • 行业网站模板小型影视网站源码
  • 湖北网站建站系统哪家好微信小程序怎么注销账号
  • 温州网站推广公司沈阳网站建设服务电话
  • 2019年的阜南县建设修路网站洛阳哪里有做网站的
  • 家里电脑可以做网站服务器吗佛山网络公司哪家最好
  • 做网站属于无形资产还是费用网站制作二维码
  • ps为什么做不了视频网站最近做网站开发有前途没
  • 平面设计师参考网站做网站建设推广好做吗
  • 网站被别的域名绑定泰安做网站网络公司
  • 建设部网站业绩如何录入免费素材图片下载
  • 佛山美容网站建设如何有效的推广宣传
  • 网站全屏轮播怎么做nginx 代理 wordpress
  • 海淀公司网站搭建二级目录怎么做网站
  • 石家庄定制网站建设凡科建站做的网站收录慢吗
  • 海口企业自助建站品牌建设三年行动方案
  • 网站建设流程平台域名分析网站
  • 旅游类网站如何做推广随机网站生成器
  • 竖导航网站做网站被坑
  • 散文古诗网站建设目标做公司网站要钱吗
  • 营销网站建设规划小浪底水利枢纽建设管理局网站
  • 建站的目的网站的月度流量统计报告怎么做
  • 网站备案添加域名拼多多代运营公司十大排名