社区
C++ 语言
帖子详情
关于内置类型wchar_t的问题
syl5005
2015-01-30 09:12:19
一般的代码里(或者叫默认)都设置wchar_t做为内置类型,但现在有两个静态库,一个要求wchar_t为内置类型,另一个要求不将wchar_t做为内置类型,否则就会出现 error LNK2019: 无法解析的外部符号 "int __cdecl SetCustomData(unsigned short *,void *,unsigned long)" (?SetCustomData@@YAHPAGPAXK@Z)
的错误,现在实在不知应该怎么做啦,
麻烦大侠帮帮忙
...全文
666
10
打赏
收藏
关于内置类型wchar_t的问题
一般的代码里(或者叫默认)都设置wchar_t做为内置类型,但现在有两个静态库,一个要求wchar_t为内置类型,另一个要求不将wchar_t做为内置类型,否则就会出现 error LNK2019: 无法解析的外部符号 "int __cdecl SetCustomData(unsigned short *,void *,unsigned long)" (?SetCustomData@@YAHPAGPAXK@Z) 的错误,现在实在不知应该怎么做啦, 麻烦大侠帮帮忙
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
syl5005
2015-02-01
打赏
举报
回复
版主大人好,我现在就是这么干的,真麻烦呀
syl5005
2015-01-31
打赏
举报
回复
不能呀,现在头疼呢
encoderlee
版主
2015-01-31
打赏
举报
回复
不行,你现在的项目必须设置为“把wchar_t作为内置类型”,因为这样的话才能同时支持AB两个库, 因为在这种设置下,wchar_t和unsigned short都是合法类型,如果你现在的项目设置为“wchar_t不作为内置类型” 那么你现在的项目下,编译器根本就不认识wchar_t这个东西,只认识unsigned short,那么A库中导出的wchar_t*自然也都不认识
syl5005
2015-01-31
打赏
举报
回复
强转成unsigned short *类型,还是不行呀,为什么呀,晕死
syl5005
2015-01-31
打赏
举报
回复
我现在的项目是不将wchar_t做为内置类型的,那么我调用A库的函数,我就得改一下A库的头文件为void Function(const unsigned short *wsz);对吗?
encoderlee
版主
2015-01-31
打赏
举报
回复
那么现在的情况就是:实质上其中一个lib中的函数以wchar_t*作为字符串,另外一个lib中的函数以unsigned short *作为字符串。 如果不重新编译lib,解决办法就是改头文件,现在两个lib的头文件里的函数声明,都是声明用wchar_t*作字符串, 但实质上其中一个lib导出的函数是用unsigned short *作字符串。 假如A库lib编译的时候是以“wchar_t为内置类型”编译出来的,A库头文件有如下函数声明 void FunctionA(const wchar_t *wsz); B库lib编译的时候是以“wchar_t不作为内置类型”编译出来的,B库头文件有如下函数声明 void FunctionB(const wchar_t *wsz); 因为B库是以“wchar_t不作为内置类型”编译出来,B库头文件中的wchar_t实际上是unsigned short 那么现在新建一个项目,设置为“wchar_t为内置类型”,然后引入A、B两个库,然后修改B库的头文件, 改成: void FunctionB(const unsigned short *wsz); 就不会有链接错误了。只是调用的时候有点麻烦。 wchar_t wsz[] = L"Hello"; FunctionA(wsz); FunctionB((const unsigned short *)wsz);
syl5005
2015-01-31
打赏
举报
回复
没有定义次函数 ,应该怎么解决呢?呵呵,刚学不太懂
蒋晟
2015-01-31
打赏
举报
回复
把不支持你的项目的wchar_t设置的库封一个DLL出来在接口里用另外一种类型,比如unsigned short
yshuise
2015-01-31
打赏
举报
回复
一般来说没有定义次函数
relaxisland
2015-01-30
打赏
举报
回复
静态库是不能重新编译,对吧? 那貌似没办法吧
CString、LPCTSTR、LPTSTR、T
CHAR
、W
CHAR
、string、w
char
_t、
char
解析
7. `w
char
_t`:`w
char
_t`是C++中的一个
内置
数据
类型
,用于存储宽字符,通常用于表示Unicode字符。在Windows平台上,`w
char
_t`占用2个字节,能够表示更大的字符集。 8. `
char
`:`
char
`是C/C++中的基本数据
类型
,用于...
发布ezWinCE 0.2 Bate
Win32 编译此平台时,需要在 项目属性->配置属性->C/C++->预处理器->预处理器中定义 WIN32, EZW_WIN32 <br>在连接时,需要将 项目属性->配置属性->C/C++->语言->将w
char
_t视为
内置
类型
设置成NO(/Zc:w
char
_t...
VC6代码向VC2005升级时要注意的
问题
如果希望保持与VC6的行为一致,可以在项目属性中选择不将`w
char
_t`视为
内置
类型
。 ### 3. 使用安全模板重载 为了兼容安全增强版本的CRT函数,可以定义`_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES`宏,这将使编译器...
C++ Convert 多种字符转换函数
C++提供了`
char
`
类型
来处理ASCII字符,但对Unicode的支持则需要使用`w
char
_t`(宽字符)。要进行这种转换,可以使用`std::wcstombs`和`std::mbstowcs`函数。例如,将宽字符字符串转换为多字节字符串: ```cpp ...
C++复习大全资料
2. **宽字符
类型
(w
char
_t)**:用于处理超过8位宽度的字符集,特别适用于多语言环境下的字符编码。在C++中,`w
char
_t`
类型
通常为16位,能够支持更多的字符集。 #### 四、强制
类型
转换 在C++中,当需要将数据按另...
C++ 语言
65,209
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章