DLL中导出ANSI和UNICODE函数
模仿window中的DLL导出ANSI和UNICODE版本的函数,使用UNICODE宏来控制使用哪个版本;
在函数实际的执行代码UNICODE版本中,在ANSI函数的版本中只做参数的转换,及ANSI字符串转UNICODE字符串,然后调用UNICODE版本的函数。
0、DLL头文件
#include <Windows.h> #ifndef _ICAL_H_ #define _ICAL_H_ #ifdef DLL_EXPORT_IMP #define DLL_EXPORT extern "C" __declspec(dllexport) #else #define DLL_EXPORT extern "C" __declspec(dllimport) #endif DLL_EXPORT int Add(int a, int b); DLL_EXPORT void ShowA(LPCSTR lpStr); DLL_EXPORT void ShowW(LPCWSTR lpStr); #ifdef _UNICODE #define Show ShowW #else #define Show ShowA #endif #endif
1、DLL导出函数的实现
#include "stdafx.h" #define DLL_EXPORT_IMP #include "ICal.h" #include <iostream> int Add(int a, int b) { return 0; } void ShowW( LPCWSTR lpStr ) { std::wcout << lpStr << std::endl; } void ShowA( LPCSTR lpStr ) { if (! lpStr) return; int nCntOfChs = MultiByteToWideChar(CP_ACP, 0, lpStr,-1, NULL, 0); LPWSTR lpwStr = new WCHAR[nCntOfChs](); if (! lpwStr) return; nCntOfChs = MultiByteToWideChar(CP_ACP, 0, lpStr, -1, lpwStr, nCntOfChs); ShowW(lpwStr); delete[] lpwStr; lpwStr = NULL; }
2、使用DLL中的导出函数
Show(TEXT("hello T world")); ShowA("hello A world"); ShowW(L"hello W world");
**********************技术交流请 email:cuihao0532#163.com 欢迎转载,转载请注明出处!***************************** 如果对本文满意请扫描文章左侧【二维码添加微信】获取更多好玩、有趣、有益、有营养的料,
你我共同成长!Y(^_^)Y
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗