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

做期货浏览哪些网站android auto

做期货浏览哪些网站,android auto,专业网站建设模板,青秀网站建设这个话题要从哪里说起呢。博主小白一个#xff0c;最近调试程序时(WIN-MSVC)连一些基本问题都没弄懂#xff0c;本着遇见问题一定要解决的原则#xff0c;下面来说下MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题#xff1a;一 动态库DLL 静态库LIBMSVC中工程只有三种类型… 这个话题要从哪里说起呢。博主小白一个最近调试程序时(WIN-MSVC)连一些基本问题都没弄懂本着遇见问题一定要解决的原则下面来说下MTD/MT/MDD/MD以及LIB/DLL之间的一些联系和问题一 动态库DLL  静态库LIBMSVC中工程只有三种类型即LIB库又叫做静态库DLL库又叫做动态库EXE可执行程序其中EXE调用LIB库或者DLL库三者关系如上。DLL库定义    动态链接库英文为DLL是Dynamic Link Library 的缩写形式DLL是一个包含可由多个程序同时使用的代码和数据的库DLL不是可执行文件。动态链接提供了一种方法使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL 副本的内容。    一般生成动态库后会产生两个文件即DLL文件和对应DLL文件的LIB文件其中DLL文件存储了具体的程序而LIB文件只是这些程序的一个目录或者说是索引。当调用DLL文件时需要在LINKER选项加载对应DLL的LIB文件。LIB库定义    静态链接库就是.lib文件库中的代码最后需要连接到可执行文件中去所以静态连接的可执行文件一般比较大一些。    静态链接库不同于动态链接库*.dll在静态库情况下函数和数据被编译进一个二进制文件通常扩展名为*.LIBVisual C的编译器在链接过程中将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件。这个过程称为静态链接此时因为应用程序所需的全部内容都是从库中复制了出来所以静态库本身并不需要与可执行文件一起发行。    因此这也导致了使用静态库程序偏大的原因    程序编译一般需经预处理、编译、汇编和链接几个步骤。在我们的应用中有一些公共代码是需要反复使用就把这些代码编译为“库”文件在链接步骤中连接器将从库文件取得所需的代码复制到生成的可执行文件中。这种库称为静态库其特点是可执行文件中包含了库代码的一份完整拷贝缺点就是被多次使用就会有多份冗余拷贝。       静态库和动态库是两种共享程序代码的方式它们的区别是静态库在程序的链接阶段被复制到了程序中和程序运行的时候没有关系动态库在链接阶段没有被复制到程序中而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库的优点是系统只需载入一次动态库不同的程序可以得到内存中相同的动态库的复本因此节省了很多内存。这就是为什么当我们将工程调整为静态库LIB时LINKER选项就消失了因为静态库不需要额外的链接其他库一次性全部编译到程序中了二 MTD/MT  与 MDD/MD静态链接多线程库MT/MTD)静态链接的多线程库的目标代码也最终被编译在应用程序的二进制文件中但是它可以在多线程程序中使用。通过 /MT 编译选项可以设置 Visual C 使用静态链接的多线程库。MTMultiThread(static link) MT 静态链接多线程库    定义 _MT以便从标准头 (.h) 文件中选择运行时例程的多线程特定版本。此选项还使编译器将库名 LIBCMT.lib 放入 .obj 文件中以便链接器使用 LIBCMT.lib 解析外部符号。Debug multiThread(static link) MTd Debug版静态链接多线程库定义 _DEBUG 和 _MT。定义 _MT 会导致从标准 .h 文件中选择运行时例程的多线程特定版本。此选项还使编译器将库名 LIBCMTD.lib 放入 .obj 文件中以便链接器使用 LIBCMTD.lib 解析外部符号。动态链接多线程库MD/MDD)动态链接的运行时库将所有的 C 库函数保存在一个单独的动态链接库 MSVCRTxx.DLL 中 MSVCRTxx.DLL 处理了多线程问题。使用 /MD 编译选项可以设置 Visual C 使用动态链接的运行时库。MultiThread(dynamic link) MD   定义 _MT 和 _DLL 以便同时从标准 .h 文件中选择运行时例程的多线程特定版本和 DLL 特定版本。此选项还使编译器将库名 MSVCRT.lib 放入 .obj 文件中。用此选项编译的应用程序静态链接到 MSVCRT.lib。该库提供允许链接器解析外部引用的代码层。实际工作代码包含在 MSVCR71.DLL 中该库必须在运行时对于与 MSVCRT.lib 链接的应用程序可用。Debug multiThread(dynamic link) MDD 定义 _DEBUG、_MT 和 _DLL以便从标准 .h 文件中选择运行时例程的调试多线程特定版本和 DLL 特定版本。它还使编译器将库名 MSVCRTD.lib 放入 .obj 文件中。为什么DLL会有其相对应的动态Lib将 /DLL 选项传递到链接器。链接器查找 DllMain 函数但并不需要该函数。如果没有编写 DllMain 函数链接器将插入返回 TRUE 的 DllMain 函数。链接 DLL 启动代码。如果命令行上未指定导出 (.exp) 文件则创建导入库 (.lib)将导入库链接到调用您的 DLL 的应用程序。这里还要补充说明一下有的DLL库时不会生成Lib文件的因为DLL没有被“导出”导出DLL库中的函数有两种方式一种是编写define文件.def)如; DEF file for MS VC LIBRARY EXPORTSXML_DefaultCurrent 1XML_ErrorString 2XML_ExpatVersion 3XML_ExpatVersionInfo 4XML_ExternalEntityParserCreate 5XML_GetBase 6XML_GetBuffer 7XML_GetCurrentByteCount 8XML_GetCurrentByteIndex 9XML_GetCurrentColumnNumber 10XML_GetCurrentLineNumber 11XML_GetErrorCode 12XML_GetIdAttributeIndex 13XML_GetInputContext 14XML_GetSpecifiedAttributeCount 15XML_Parse 16XML_ParseBuffer 17XML_ParserCreate 18XML_ParserCreateNS 19XML_ParserCreate_MM 20XML_ParserFree 21XML_SetAttlistDeclHandler 22XML_SetBase 23XML_SetCdataSectionHandler 24XML_SetCharacterDataHandler 25XML_SetCommentHandler 26XML_SetDefaultHandler 27XML_SetDefaultHandlerExpand 28XML_SetDoctypeDeclHandler 29XML_SetElementDeclHandler 30XML_SetElementHandler 31XML_SetEncoding 32XML_SetEndCdataSectionHandler 33XML_SetEndDoctypeDeclHandler 34XML_SetEndElementHandler 35XML_SetEndNamespaceDeclHandler 36XML_SetEntityDeclHandler 37XML_SetExternalEntityRefHandler 38XML_SetExternalEntityRefHandlerArg 39XML_SetNamespaceDeclHandler 40XML_SetNotStandaloneHandler 41XML_SetNotationDeclHandler 42XML_SetParamEntityParsing 43XML_SetProcessingInstructionHandler 44XML_SetReturnNSTriplet 45XML_SetStartCdataSectionHandler 46XML_SetStartDoctypeDeclHandler 47XML_SetStartElementHandler 48XML_SetStartNamespaceDeclHandler 49XML_SetUnknownEncodingHandler 50XML_SetUnparsedEntityDeclHandler 51XML_SetUserData 52XML_SetXmlDeclHandler 53XML_UseParserAsHandlerArg 54 ; added with version 1.95.3XML_ParserReset 55XML_SetSkippedEntityHandler 56 ; added with version 1.95.5XML_GetFeatureList 57XML_UseForeignDTD 58 ; added with version 1.95.6XML_FreeContentModel 59XML_MemMalloc 60XML_MemRealloc 61XML_MemFree 62 ; added with version 1.95.8XML_StopParser 63XML_ResumeParser 64XML_GetParsingStatus 65另一种是在函数头加上 _declspec(dllexport)如#define DLL1_API _declspec(dllexport) DLL1_API int Add(int a,int b) {return ab; }   如果你想查看你的DLL的导出情况可以这样做在你的VC安装目录下的VC98\BIN目录下有一个dumpbin.exe文件它就是用来查看DLL文件信息的你可以在命令行下CMD用dumpbin -exports dllname 命令来查看DLL的导出函数列表。PS:DLL有其对应的LIB静态LIB只有其自己三 MD/MDD/MT/MTT 与DLL/LIB的关系当使用动态库DLL时在MSVC中的Code Generation选项选择MD/MDD依Release或Debug而定此时系统函数会调用MSVCRT.lib与MSVCR71.DLL当使用静态库LIB时在MSVC中的Code Genration选项选择MT/MTD依Release或Debug而定此时系统函数会调用LIBCMT.lib四 警告    不要混合使用库的静态版本和动态版本。在一个进程中有多个库副本会导致问题因为副本中的静态数据不与其他副本共享。链接器禁止在 .exe 文件内部既使用静态版本又使用动态版本链接但您仍可以使用运行时库的两个或更多副本。例如当与用动态 (DLL) 版本的运行时库链接的 .exe 文件一起使用时用静态非 DLL版本的运行时库链接的动态链接库可能导致问题。还应该避免在一个进程中混合使用这些库的调试版本和非调试版本。这句话的意思是exe工程尽量保持要么都引用动态库要么都静态库不要又引用动态又引用静态会容易引起冲突还有就是别动态库中引用了一个静态库然后该动态库又被exe引用了这些都容易造成冲突 转载于:https://blog.51cto.com/frankiewb/1362863
http://www.zqtcl.cn/news/434456/

相关文章:

  • iis网站重定向软件开发培训机构排名
  • 浙江大学教室办事大厅网站建设网页棋牌搭建
  • 长沙市天心区建设局网站新河网站
  • 网站改版 升级的目的嘉兴海盐县城乡建设局网站
  • 网站建设一年多少钱上海工程建设交易信息网站
  • 网站推广到底应该怎么做中国建设银行网上登录入口
  • 东莞网站建设服务商wordpress页面样式
  • 亿星网站建设创业网站怎么做
  • 绿韵建设有限公司网站重庆景点分布图
  • 咨询类网站模板wordpress怎样切换语言
  • 大连网站建设与维护题库网站建设目标是
  • 威海网站开发询广西南宁网站运营
  • 网站的素材做logo长沙专业的网站建设企业
  • 网站显示速度的代码是什么情况专门做中式服装平台的网站
  • 驻马店做网站的公司大连网站模板建站
  • aso如何优化网站优化分析软件
  • IT周末做网站违反制度么wordpress 图床 插件
  • 成都网站建设scjsc888因网站建设关闭的公告
  • 唐山公司建设网站十大牌子网
  • 网站开发的选题依据电子商务网站建设内容
  • 中企动力做的网站被百度屏蔽推销网站话术
  • 四川网站制作广告设计自学网教程
  • 做个简单的企业小网站单纯做网站的公司
  • 河北省建设厅官方网站哈尔滨建设工程招聘信息网站
  • 茂名网站制作网页个人博客登录首页
  • 类似qq空间的网站wordpress 简历主题
  • 专业网站运营制作怎么写代码做网站
  • 安徽免费网站制作西安做行业平台网站的公司
  • 我想做服装网站怎么做网页设计优秀案例分析
  • 网站建设技术教程视频wordpress中文模版