动态链接库的生成和使用(错误汇总)

    Visual Studio版本: 2019 规定:生成dll的工程和使用dll的工程要保持下面三点保持一致 1.debug或者release 2.x86(win32)或者x64 3.字符集

1.生成动态链接库

官方文档:https://docs.microsoft.com/zh-cn/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=msvc-160

生成动态链接库 .dll 同时生成 .lib 的原因:这个.lib并不是lib库而是引入库。

引入库文件 (.LIB): 包含该动态链接库包含的函数和变量的符号名。注意:虽然引入库文件和静态链接库文件的后缀名相同(.LIB),但是他们之间有着本质的区别,不可混淆。 动态链接库文件 (.DLL): 包含该动态链接库实际的函数和数据。在程序运行阶段,加载该文件,并将该文件映射到进程地址空间中,然后访问该文件中的相应函数。

选择一个空项目然后添加.c .h文件就好了,不需要添加main函数因为不生成可执行文件。 项目 -> 属性->配置类型->动态库

2.使用动态链接库

2.1找不到.h,.dll,.exe

1.首先添加路径

    头文件路径添加 lib文件路径添加(这个lib并非静态库而是dll的引导文件)。具体dll文件应该放在哪里,请往下看。 lib命添加 上面只添加了 .lib 的路径,这里把 .lib 的文件名写进去 dll文件添加 可以参考:https://blog..net/jiasu6905/article/details/106711851 这里只说最简单的一种方式:把 .ddl 复制到工程编译输出文件目录下 eg:x64 -> debug下

2.添加路径还找不到的话

    .h找不到 可能原因:平台使用x86和工程使用x64不一致导致的(重点,不管是dll生成项目还是使用项目平台配置要保证相同,最开头提到的那三点) .dll找不到 存放路径不对,不是添加 .lib 路径就能找到dll 1.添加系统环境变量 2.把dll文件存放到输出文件目录 字符集导致 解决:保持跟dll生成项目的字符集保持一致,并不是一定是下面的unicode

2.2坑人的字符集问题

ASCII -> ANSI(多字节字符集)-> Unicode ANSI(多字节字符集):在ASCII基础上衍生很多版本,比较出名的GB-2312 unicode字符集(UTF-16):为了统一多字节字符集而提出的一种字符集,后来为了处理单字节衍生出大名鼎鼎的UTF-8。

经验分享 程序员 微信小程序 职场和发展