gpt4 book ai didi

dll - VC2019不能使用CString参数(VC6.0内置)

转载 作者:行者123 更新时间:2023-12-05 01:24:02 30 4
gpt4 key购买 nike

我有一个用 VC6.0 构建的旧 DLL。

我想在 VC2019 项目中使用这个 DLL。

这个DLL文件是一个MFC DLL,包含了很多类和函数。

除了这三个函数(包含CString参数)外,使用类和函数没有问题。

导出的DLL函数(类函数)如下:

class CColorListCtrl : public CListCtrl
{
...

public:
int AddColumn(CString szHeaderStr, int nColWidth);
int AddItem(CString szItem);
bool SetItemTip(int nRow, int nCol, CString szTip);

...
}

链接错误如下:

error LNK2001: unresolved external symbol "public: int __thiscall CColorListCtrl::AddColumn(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >,int,int)" (?AddColumn@CColorListCtrl@@QAEHV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@HH@Z)

error LNK2001: unresolved external symbol "public: int __thiscall CColorListCtrl::AddItem(class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >)" (?AddItem@CColorListCtrl@@QAEHV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z)

error LNK2001: unresolved external symbol "public: bool __thiscall CColorListCtrl::SetItemTip(int,int,class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > >)" (?SetItemTip@CColorListCtrl@@QAE_NHHV?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@@Z)

DLL导出的函数如下:

?AddColumn@CColorListCtrl@@QAEHVCString@@HH@Z
?AddItem@CColorListCtrl@@QAEHVCString@@@Z
?SetItemTip@CColorListCtrl@@QAE_NHHVCString@@@Z

为了解决这个问题,我将Project Character Set(Project Setting -> General -> Character Set)改为“Use Multi-Byte Character Set”,但问题并没有解决。

我注意到 CString 类发生了变化,因此 VC6 和 VC2019 中的 CString 类不同。

我不知道如何解决这个问题。我也不能更改 DLL,因为我删除了这个 DLL 的项目。

请帮帮我。

谢谢。

最佳答案

VC++ 6 和 VC++ 2019 中的

CString 彼此不兼容,因为存在差异。

也就是说,如果在VC6 dll中使用CString作为导出函数的参数,则无法在VS2019中直接调用VC6 dll。

我建议一种解决方案:

  1. 首先,创建一个 dll,作为 vc6 中的转发器。此 dll 的导出函数使用例如 LPCTSTR 作为参数。设此dll为A.dll,原dll为B.dll。
  2. 在A.dll内部,调用B.dll的export函数,将结果转换为LPCTSTR返回。

VS2019调用了A.dll的导出函数。 LPCTSTR兼容VS2019和VS6,所以你可以通过这种方式解决你的问题。

关于dll - VC2019不能使用CString参数(VC6.0内置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71746020/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com