哪个网站网页做的好看想做视频

张小明 2026/1/14 14:46:05
哪个网站网页做的好看,想做视频,图片编辑器在线制作,戴尔网站建设C / C 调用 DLL 的几种常见方法#xff08;详解 示例#xff09; 在 Windows 平台开发中#xff0c;DLL#xff08;Dynamic Link Library#xff0c;动态链接库#xff09; 是非常核心的一种代码复用方式。 无论是#xff1a; 调用第三方 SDK拆分大型工程插件化设计…C / C 调用 DLL 的几种常见方法详解 示例在 Windows 平台开发中DLLDynamic Link Library动态链接库是非常核心的一种代码复用方式。无论是调用第三方 SDK拆分大型工程插件化设计COM / OPC / 工控 / 驱动相关开发都会不可避免地用到C / C 调用 DLL。本文将从零基础视角出发系统讲清楚DLL 是什么C/C 调用 DLL 的 3 种主流方式每种方式的使用场景常见坑点与避坑建议一、DLL 是什么一句话理解DLL 是一个“在运行时被加载的函数集合”和静态库.lib的核心区别项目DLL静态库链接时间运行时编译期文件.dll .lib.lib更新可单独替换需重新编译内存多进程共享各自一份二、最基础示例先做一个 DLL1、 编写 DLL 源码// mydll.h#pragmaonce#ifdefMYDLL_EXPORTS#defineMYDLL_API__declspec(dllexport)#else#defineMYDLL_API__declspec(dllimport)#endifexternCMYDLL_APIintAdd(inta,intb);// mydll.cpp#defineMYDLL_EXPORTS#includemydll.hintAdd(inta,intb){returnab;}关键点解释__declspec(dllexport)导出函数__declspec(dllimport)导入函数extern C防止 C 名字修饰非常重要2、 编译生成打开 VS 开发者命令行在开始菜单中找到并打开x64 Native Tools Command PromptforVS2022注意位数x86 DLL → 用 x86 Native Toolsx64 DLL → 用 x64 Native Tools使用cl.exe生成Debug版DLL带 PDB最常用 Debug 编译命令推荐cl /LD /Zi /Od /MDd /EHsc mydll.cpp各参数含义编译选项参数说明参数含义/LD生成 DLL/Zi生成调试信息PDB/Od关闭优化便于调试/MDd使用 Debug CRTmsvcrtd.dll/EHsc标准 C 异常处理推荐D:\test\dllcl /LD /Zi /Od /MDd /EHsc mydll.cpp 用于 x86 的 Microsoft(R)C/C 优化编译器19.50.35720 版 版权所有(C)Microsoft Corporation。保留所有权利。 mydll.cpp Microsoft(R)Incremental Linker Version14.50.35720.0 Copyright(C)Microsoft Corporation. All rights reserved. /out:mydll.dll /dll /implib:mydll.lib /debug mydll.obj D:\test\dll编译结果mydll.dll ← Debug DLLmydll.lib ← 导入库mydll.pdb ← 调试符号文件关键指定 Debug 输出目录cl /LD /Zi /Od /MDd mydll.cpp ^ /Fe:Debug\mydll.dll ^ /Fd:Debug\mydll.pdb生成结果Debug\├── mydll.dll ├── mydll.lib └── mydll.pdbRelease 版对照cl /LD /O2 /MD mydll.cppDebugRelease/Zi /Od /MDd/O2 /MD有 pdb可选 pdb可单步优化后难调试编译选项参数说明最终你会得到mydll.dll mydll.lib三、方式一隐式链接最推荐最常用适用场景DLL 在开发时就确定SDK / 内部模块不需要动态卸载1、调用方代码#includeiostream#includemydll.hintmain(){intrAdd(2,3);std::coutresult rstd::endl;return0;}2、工程设置Visual Studio添加 lib项目属性链接器 → 输入 → 附加依赖项添加mydll.lib放置 dllmydll.dll放在exe 同目录或 PATH 目录优点语法最简单编译期检查函数签名性能最好缺点DLL 缺失 → 程序启动直接失败四、方式二显式加载LoadLibrary / GetProcAddress适用场景插件系统可选功能DLL 可能不存在逆向 / 热更新 / 工控系统常用示例代码#includewindows.h#includeiostreamtypedefint(*AddFunc)(int,int);intmain(){HMODULE hDllLoadLibraryA(mydll.dll);if(!hDll){std::coutLoadLibrary failedstd::endl;return-1;}AddFunc Add(AddFunc)GetProcAddress(hDll,Add);if(!Add){std::coutGetProcAddress failedstd::endl;FreeLibrary(hDll);return-1;}intrAdd(3,4);std::coutresult rstd::endl;FreeLibrary(hDll);return0;}关键注意点函数名必须是导出名C 函数如果没有extern C名字会被修饰函数指针签名必须完全一致可以使用下面的命令查看函数指针签名dumpbin /exports mydll.dll调用约定要一致__cdecl / __stdcall优点程序可在 DLL 缺失时继续运行灵活性极高缺点写法复杂容易崩溃函数签名不匹配五、方式三DLL .lib但运行时可选进阶这是方式一和方式二的混合体编译期链接.lib运行时通过LoadLibrary判断是否可用适合大型工程 / 插件化 SDK。六、C 类如何导出 / 调用1、DLL 导出类示例class__declspec(dllexport)MyClass{public:intAdd(inta,intb);};不推荐直接跨 DLL 导出 C 类原因ABI 不稳定编译器 / STL 版本耦合内存管理容易炸工程实践建议DLL 对外只暴露 C 接口内部再用 C七、常见坑点总结新手必看1、忘记 extern “C”externC__declspec(dllexport)intFunc();否则GetProcAddress很容易失败。2、32 位 / 64 位不匹配32 位 exe ❌ 加载 64 位 dll会直接LoadLibrary失败用dumpbin /headers xxx.dll查看位数3、 调用约定不一致__stdcall vs __cdecl不一致 → 栈损坏 → 程序随机崩溃4、 DLL 放置路径错误Windows 查找 DLL 顺序exe 同目录系统目录PATH 环境变量八、如何查看 DLL 导出函数实用技巧dumpbin /exports mydll.dll可以看到函数名序号是否被修饰这是调试GetProcAddress的神器。九、实际工程建议经验总结新项目优先 extern “C” 隐式链接插件系统显式加载不要跨 DLL 传 STL 容器不要在不同 CRT 中 free 内存十、总结一句话DLL 是 Windows 下模块化的核心能力会用 DLL才算真正进入 C/C 工程开发。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站 底部网站开发 用户角色

引言 在车载 Android 系统开发中,稳定性问题是最让人头疼的挑战之一。与手机不同,车载系统对稳定性的要求近乎苛刻——想象一下,用户正在高速公路上行驶,导航突然黑屏,或者中控卡死无响应,这不仅仅是用户体验问题,更关乎行车安全。 经过多年的车载系统开发实践,我们将…

张小明 2026/1/9 15:08:45 网站建设

公司网站建设的工具wwe中文官网站

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容: 开发一个专注于提升开发效率的VSCode插件,功能包括:1) 智能代码片段库,支持语音/快捷键调用;2) 自动生成单元测试模板;3)…

张小明 2026/1/11 3:08:53 网站建设

那个公司可以做网站门户网站的建设思路

VMware Workstation 故障排查与解决方案 初步排查思路 当遇到 VMware 相关问题时,我们可以先从一些基础的操作和判断入手。首先,可以尝试使用已知能正常工作的客户操作系统,像 Linux 和 Windows 98 就很适合。这是因为它们安装和启动速度快,并且对设备有很好的支持。如果…

张小明 2026/1/11 9:53:12 网站建设

网站 模板 安装安阳中飞网站建设

最近是不是到了报销的高峰期?好多小伙伴都遇到了同一个问题:财务发给我一张电子发票,后缀居然是.ofd,我的电脑和手机都打不开,更别提打印报销了!这到底是个啥文件啊?大家别慌!其实OF…

张小明 2026/1/12 21:13:44 网站建设

网站建设问卷调查表资源下载wordpress

百度百家号分发:覆盖搜索流量入口获取精准客户 在内容平台竞争日益激烈的今天,用户打开百度百家号的那一刻,背后已经完成了一次“看不见的赛跑”——从请求发起、特征提取到模型打分排序,整个过程必须在几十毫秒内完成。任何一个环…

张小明 2026/1/9 16:37:06 网站建设

网站可以免费建设吗电子商务网站制作教程

Unitree机器人数字孪生:解锁虚拟操控的5大核心体验 【免费下载链接】go2_omniverse Unitree Go2, Unitree G1 support for Nvidia Isaac Lab (Isaac Gym / Isaac Sim) 项目地址: https://gitcode.com/gh_mirrors/go/go2_omniverse 想要在虚拟世界中精准操控真…

张小明 2026/1/9 17:17:33 网站建设