社区
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)
的错误,现在实在不知应该怎么做啦,
麻烦大侠帮帮忙
...全文
741
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
打赏
举报
回复
静态库是不能重新编译,对吧? 那貌似没办法吧
VC++2008中的unsigned short和w
char
_t
从VC6 移植到VS2008的时候,原来unsigned short* 直接可以转换成w
char
_t的,现在都不能直接转换了,从网上查到了以下原因: 【1、哪种情况可以直接进行
类型
转换?哪种必须要显式的转换?】 [ VC++2005中的unsigned short和w
char
_t 很多人可能会认为unsigned short和w
char
_t是一个
问题
-2011-11-24:“const int vc_attributes::Pre::w
char
_t”: 重定义
问题
:“const int vc_attributes::Pre::w
char
_t”: 重定义vs2010,Qt4.8.5插件
问题
描述:“const int vc_attributes::Pre::w
char
_t”: 重定义; 原因分析: 由于vs2010中出属性–>”C/C++”–>语言–>”将W
Char
_t视为
内置
类型
”为否; 解决方法: 将2中项设置为是。
VS2015,qt 5.7.1,编译使用QString的toW
Char
Array时出现无法解析的toW
Char
Array(unsigned
char
*)的
问题
,无法正确识别W
Char
_t
类型
VS2015,qt 5.7.1,LNK200,无法解析的toW
Char
Array(unsigned
char
*)
问题
,即无法正确识别W
Char
_t
类型
,如图:解决:进入工程属性,C/C++ -->> 语言 -->> 将W
Char
_t视为
内置
类型
-->> 将否改为是,重新编译解决。...
VC2005编译的
问题
1.无法解析的外部符号"w
char
_t*__stdcall_com_util::ConvertStringToBSTR(
char
const*)"(?ConvertStringToBSTR@_com_util@@YGPA_WPBD@Z)答:这个
问题
可以通过改工程设置解决ConfigurationProperties->C/C->LanguageTreatw
char
_tasBuilt-inTy
Treat w
char
_t as built-in type不一致导致的链接错误
今天用VS2013新建了一个工程,生成时出现很多怪异的链接错误,比如: error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class MTString __cdecl MTString::fromW
Char
Array(w
char
_t const *,int)"(__imp_?f...
C++ 语言
65,214
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章