关于VB.NET动态连接库使用四点总结

 我来答
世纪网络17
2022-10-12 · TA获得超过5952个赞
知道小有建树答主
回答量:2426
采纳率:100%
帮助的人:143万
展开全部

  VB NET动态连接库还是比较常用的 于是我研究了一下 在这里拿出来和大家分享一下 希望对大家有用 Windows动态连接库是包含数据和函数的模块 可以被其它可执行文件(EXE DLL OCX 等)调用 动态连接库包含两种函数 输出(exported)函数和内部(internal)函数 输出函数可以被其它模块调用 而内部函数则只能在动态连接库内部使用

  尽管VB NET动态连接库也能输出 数据 但实际上它的数据通常是只在内部使用的 使用动态连接库的优点是显而易见的 将应用程序的一部分功能提取出来做成动态连接库 不但减小了主应用程序的大小 提高了程序 运行效率 还使它更加易于升级 多个应用程序共享一个动态连接库还能有效地节省系统资源 正因为如此 在Windows系统中 动态连接库得到了大量的使用

  一般来说 动态连接库都是以DLL为扩展名的文件 如Kernel dll mdlg dll等 但也有例外 如 位Windows的核心部件之一GDI exe其实也是一个动态库 编写动态连接库的工具很多 如VisualC++ BorlandC++ Delphi等 具体方法可以参见相关文档 下面只以Visual C++ 为例 介绍一下开发应用于VisualBasic 的动态连接库时应注意的问题(本文中所有涉及C/C++语言或编译环境的地方 都以VC为例 所有涉及Visual Basic的地方都以VB 为例)

  作为一种 位Windows应用程序的开发工具 VB生成的exe文件自然也都是 位的 通常情况下也只能调用 位的动态连接库 但是 并不是所有的 位动态库都能被VB生成的exe 文件正确地识别 一般来说 自己编写用于VB NET动态连接库时 应注意以下几个方面的

  问题

   生成动态库时要使用__stdcall调用约定 而不能使用缺省的__cdecl调用约定 __stdcall 约定通常用于 位API函数的调用

   在VC中的定义文件( def)中 必须列出输出函数的函数名 以强制VC系统将输出函数的装饰名(decoratedname)改成普通函数名 所谓装饰名是VC的编译器在编译过程中生成的输出函数名 它包含了用户定义的函数名 函数参数及函数所在的类等多方面的信息 由于在VC中定义文件不是必需的 因此工程不包含定义文件时VC就按自己的约定将用户定义的输出函数名修改成装饰名后放到输出函数列表中 这样的输出函数在VB生成的应用程序中是不能正确调用的(除非声明时使用Alias子句) 因此需要增加一个 def文件 其中列出用户需要的函数名 以强制VC不按装饰名进行输出

   VC中的编译选项 结构成员对齐方式(structure member alignment) 应设成 字节 其原因将在后文详细介绍

lishixinzhi/Article/program/ASP/201311/21696

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式