ATL CString与MFC CString的问题

hurryboylqs 2010-11-22 04:45:35
我在一个静态库工程里实现一个函数
函数返回值是CString
#include<atlstr.h>
:
CString GetModulePath();

在一个MFC的工程里引用这个静态库使用这个函数
编译时可以通过,但连接时就出现以下错误:

error LNK2019: 无法解析的外部符号 "class ATL::CStringT<wchar_t,class StrTraitMFC<wchar_t,class ATL::ChTraitsCRT<wchar_t> > > __cdecl GetModulePath(void)" (?GetModulePath@@YA?AV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@XZ),该符号在函数 "protected: bool __thiscall xxxx中被引用

奇怪 了 看了下编译选项都一样 的,是不是MF不兼容这个?还是少了或者多了某些宏
记得MFC和 ATL都是用同一个CString的那
...全文
613 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
libinfei8848 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 hurryboylqs 的回复:]
看来mfc和atl的CString还是不太兼容 ,估计是一些宏定义的问题
建立静态库工程时加入MFC支持可以了
[/Quote]

学习到了
hurryboylqs 2010-11-22
  • 打赏
  • 举报
回复
看来mfc和atl的CString还是不太兼容 ,估计是一些宏定义的问题
建立静态库工程时加入MFC支持可以了
ouyh12345 2010-11-22
  • 打赏
  • 举报
回复
bool GetModulePath(str::string path);
neohope 2010-11-22
  • 打赏
  • 举报
回复
#include<atlstr.h>
改为#include<CString.h>试试看

你最好不要混用ATL和MFC的库
hurryboylqs 2010-11-22
  • 打赏
  • 举报
回复
参数也不行,奇怪了,连接就出那个错误
hurryboylqs 2010-11-22
  • 打赏
  • 举报
回复
不是DLL 是一个静态lib
static lib
ouyh12345 2010-11-22
  • 打赏
  • 举报
回复
在参数里返回比较合适
在dll的导出函数里使用string,不要把string设为返回值,作为参数,在函数内部拷贝

16,548

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧