调用有参数为CString类型的函数,就会出现LNK2019的错误

1>Record.obj : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: int cdecl DbRSet::GetCollect(wchar_t const *,class ATL::CStringT > > &)" (imp_?GetCollect@DbRSet@@QEAAHPEB_WAEAV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z),该符号在函数 "private: long __cdecl CRecord::searchTaskList(enum DRecord::REPORT_SUB_TYPE,class ATL::CStringT > >,class DbRSet &)" (?searchTaskList@CRecord@@AEAAJW4REPORT_SUB_TYPE@DRecord@@V?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@AEAVDbRSet@@@Z) 中被引用

生成库没有问题,但是上层调用的时候就会出现这个问题,和CString的使用有关系,把CString相关的注释掉,就不会出现问题,大牛帮忙!!!

2个回答

你是不是用了atl等别的库,ATL::CString,不是mfc的
CString

devmiao
见了你女王大人喵姐还不跪下 回复ms_my: 加上namespace看看
大约 5 年之前 回复
ms_my
ms_my 我直接打的CString,鼠标放上面显示的是ATL::CString
大约 5 年之前 回复

是不是类型不一样,库的CString。跟你传递的是不是一个类型

ms_my
ms_my 我也不清楚,我都是直接用的CString,鼠标放在上面是显示ATL::CString
大约 5 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

关于QT调用以CString 为参数的动态库

遇到了一个奇葩库,头文件里参数是CString……现在要在QT里调用,不管怎么弄,直接对库的头文件报CString未定义,有木有什么办法让cstring在QT里面定义出来啊!!!

error LNK2019: 无法解析的外部符号

#include "stdafx.h" #include "qux.h" #include "zhu.h" #include "atlimage.h" // Czhu 对话框 IMPLEMENT_DYNAMIC(Czhu, CDialog) Czhu::Czhu(CWnd* pParent /*=NULL*/) : CDialog(Czhu::IDD, pParent) { } Czhu::~Czhu() { } void Czhu::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(Czhu, CDialog) ON_BN_CLICKED(IDC_BUTTON1, &Czhu::OnBnClickedButton1) END_MESSAGE_MAP() // Czhu 消息处理程序 void Czhu::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 CFileDialog fileDlg(TRUE, _T("png"), NULL, 0, _T("all Files(*.*)|*.*||"), this); if(IDOK == fileDlg.DoModal()) { fileDlg.DoModal(); CString strFilePath; strFilePath = fileDlg.GetPathName(); if (strFilePath == _T("")) { return; } CRect rc; GetDlgItem(IDC_STATIC1)->GetClientRect(rc); CImage image; image.Load(strFilePath); //图片文件路径 if (image.GetBPP() == 32) { int i; int j; for (i = 0; i < image.GetWidth(); i++) { for (j = 0; j < image.GetHeight(); j++) { byte *pByte = (byte *)image.GetPixelAddress(i, j); pByte[0] = pByte[0] * pByte[3] / 255; pByte[1] = pByte[1] * pByte[3] / 255; pByte[2] = pByte[2] * pByte[3] / 255; } } } CDC* dc; dc = GetDlgItem(IDC_STATIC1)->GetDC(); image.Draw(dc->m_hDC, rc); ReleaseDC(dc); } } 然后就报错 1>qux.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CquxDlg::CquxDlg(class CWnd *)" (??0CquxDlg@@QAE@PAVCWnd@@@Z),该符号在函数 "public: virtual int __thiscall CquxApp::InitInstance(void)" (?InitInstance@CquxApp@@UAEHXZ) 中被引用 1>D:\My Documents\Visual Studio 2008\Projects\qux\Debug\qux.exe : fatal error LNK1120: 1 个无法解析的外部命令 这怎么改

C++ CString 求分割字符串高效函数

简单贴一段现有代码 ///参数为 源文本 分割结果指针数组 数组个数 用作分割的字符串 void StringSplit(CString data, CString* datas, int datasCount, CString men) { int i = 0; while (i<datasCount) { int EndIndex = data.Find(men); if (EndIndex == -1) { datas[i] = data; break; } datas[i] = data.Mid(0, EndIndex); data.Delete(0, EndIndex + men.GetLength()); ++i; } } 求一段高效率的字符串分割函数

C++中cstring的find函数出现问题

![图片](https://img-ask.csdn.net/upload/201509/13/1442074693_738098.jpg)

为什么include<cstring>了却无法使用cstring的函数。

![图片说明](https://img-ask.csdn.net/upload/201712/08/1512703267_338179.png) 这个是书上的源代码,本身没有问题但是一直出现错误: 1>------ 已启动生成: 项目: 实验八code2, 配置: Debug Win32 ------ 1>实验八code2.cpp 1>c:\users\administrator\source\repos\实验八code2\实验八code2\实验八code2.cpp(18): error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. 1>c:\program files\windows kits\10\include\10.0.16299.0\ucrt\string.h(132): note: 参见“strcpy”的声明 1>已完成生成项目“实验八code2.vcxproj”的操作 - 失败。

C++使用_beginthread函数如何传递多个参数,包含一个hwnd的参数

我创建一个线程需要向线程的回调函数中传递两个参数,一个CString类型的字符串,一个HWND的句柄。我知道可以使用结构体封装参数,然后在_begeithread的第三个参数中传递这个结构体指针。但是现在的问题是HWND这个句柄貌似不能这样传递,据说这个传递过去是个拷贝参数,根本不能用,我测试过了,确实不行,我之所以传递这个句柄是要在子线程发送消息到主线程,肯定要有这个参数。另外就是如果我只传递这一个参数就可以。有什么好的解决办法吗?或者使用别的线程函数,我必须要两个参数。。。求大神。。。

CString类型(汉字)转换为wchar_t类型时显示的为乱码

如题,从编辑框中提取汉字,取出为CString类型的,将此变量转换为wchar____t类型的变量,显示出来为乱码,但是当输入的为英文字母时,显示的就是正确的,不知道问题出现在哪里,求大神指点 ! 部分程序: ![图片说明](https://img-ask.csdn.net/upload/201509/28/1443441352_932050.png)

CString类型变量的输入。

CString ziduan=""; CString value=""; printf("请输入要查询的字段\n"); scanf("%s", ziduan); printf("请输入要查询的值\n"); scanf("%s", value); 调试的时候发现,ziduan和value的值是一样的,怎么回事啊,这两个变量怎么像连起来一样,输入其中一个的值,另一个跟着变呢?

如果想拿数组作为函数参数,函数应该怎么写?

![图片说明](https://img-ask.csdn.net/upload/202005/17/1589685637_942238.jpg) /* 2.cpp .2. 编写一个函数, 把字符串中所有的字符都前移一个位置, 而串中的第一个字符移到最后。并编写主程序进行测试。*/ ``` #include <iostream> #include <string.h> #include <cstring> using namespace std; int movespace(int i,int n) { if (i == (n - 1)) return 0; else return i + 1; } int main() { string s; cin >> s; int n = s.length(); const char* str = s.c_str(); for (int i = 0; i < n; i++) { cout << str[movespace(i,n)]; } return 0; } ``` //将数组str作为函数参数 ``` void fun(char* str) { ??? } ```

C++ 不存在从“CString” 到 "LPCWCH"的适当转换函数

环境是 将程序从 Unicode 转换到 使用多字节字符集导致的 报错信息:不存在从 "CString" 到 "LPCWCH" 的适当转换函数 void 字符转换3(CString CString文本, char *char数组) { int i; char* tmpch; int wLen = WideCharToMultiByte(CP_ACP, 0, CString文本, -1, NULL, 0, NULL, NULL);//得到Char的长度 tmpch = new char[wLen + 1]; //分配变量的地址大小 WideCharToMultiByte(CP_ACP, 0, CString文本, -1, tmpch, wLen, NULL, NULL); //将CString转换成char* for(i = 0; tmpch[i] != '\0'; i++) char数组[i] = tmpch[i]; char数组[i] = '\0'; } 报错代码,本人是新手,自己练习所遇到的,但是必须将 Unicode 转换到 使用多字节字符集 ,不知道是否有其他的代码可以替代转换过程,或者是哪里出现了问题,CSDN大佬们 请出来解答一下,谢谢。

return一个类对象的时候 调用了复制构造函数 之后再调用析构函数 为何返回的是析构之后的值?

朋友实现了一个String类 其实问题不少 比如NULL传入strlen等,但是最大的问题是很奇怪 main函数执行到S=S1+S2时 单步调试发现加法运算符重载函数中那个类对象temp在执行到return时 作为参数 传给了复制构造函数 这个正常 按理说之后temp会被析构 然后函数的返回值应当是之前被复制构造函数创建的无名临时对象的值,但很奇怪 调试信息说明 返回的居然是temp被析构之后的值。。。 找了很多的资料也没明白 还望高人指点 ``` #define _CRT_SECURE_NO_WARNINGS #define FILE_BUFFER_LENGTH 30000 #include<iostream> #include<cstring> using namespace std; class CMyString { friend std::ostream& operator<<(std::ostream& out, CMyString& rhs); //friend std::istream& operator>>(std::istream& in, CMyString& rhs); public: CMyString() { buf = NULL; } CMyString(const char* rhs) { buf = new char[strlen(rhs) + 1]; strcpy(buf, rhs); } CMyString(const CMyString& rhs) { buf = new char(strlen(rhs.buf) + 1); buf = rhs.buf; } ~CMyString() { cout << "called" << endl; if (buf != NULL) { delete[]buf; } } CMyString& operator=(const CMyString& rhs); CMyString operator+(const CMyString& rhs); private: char* buf; }; ostream& operator<<(std::ostream& out, CMyString& rhs) { out << rhs.buf; return out; } CMyString& CMyString::operator=(const CMyString& rhs) { if (this != &rhs) { if (buf != NULL) delete[]buf; buf = new char[strlen(rhs.buf) + 1]; strcpy(buf, rhs.buf); } return *this; } CMyString CMyString::operator+(const CMyString & rhs) { CMyString temp; temp.buf = new char[strlen(buf) + strlen(rhs.buf) + 1]; strcpy(temp.buf, buf); strcat(temp.buf, rhs.buf); return temp; } int main() { CMyString S1("Good"), S2(" morning"), S3(" evening"), S; S = S1 + S2; cout << S << endl; //S.~CMyString(); system("pause"); return 0; } ```

MFC CString "="赋值出错

程序大致流程是:有两个输入通道从一个数据源接收数据放入自己的缓存里,再创建线程解析缓存里的数据,用来更新内存对象(这里是pStock对象),两个通道的解析数据的线程函数是同一个函数,下面是线程函数的一部分代码: pStock = FindStockByCode(csCode); switch (datatype) { case TIME : { pStock->m_SrcTime = data; CString temp = pStock->m_SrcTime.Right(8) ; pStock->m_csOrignTime = temp; //**运行到这里就出错** if (pStock->GetTimeFilterVal())//如果该品种需要进行时间参数过滤 { if (!pStock->CompareTime(pStock->m_SrcTime)) { CString csLog; csLog.Format("%s/%s:Lost Because CurTime--%s / SrcTime--%s \n",pStock->GetChName(),pStock->GetSrcCode(),CTime::GetCurrentTime().Format("%H:%M"),data) ; ShowAndWriteAlarmInfo(csLog) ;//log return ; } } } break; case ... //其他的case语句 } 程序可以运行一会,pStock->m_csOrignTime = temp; 这一句也会被执行n遍,但是在某一刻再次运行的时候就出错了,错误指到CString对象内部Release()函数

无法从“CString”转换为“LPCSTR

目的是利用文件对话框,在MFC对话框中加载一副图片。代码从别的项目拷贝 过来的,原项目可以编译通过,但是在我新建的项目中就提示出错,提示mPath无法从CString转换为LPCSTR,这个要怎么解决呀? void CMat_openimgDlg::OnBnClickedopen() { // TODO: 在此添加控件通知处理程序代码 // TODO: 在此添加控件通知处理程序代码 CFileDialog dlg(TRUE, _T("*.jpg"), NULL, OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, NULL, NULL); // 选项图片的约定 dlg.m_ofn.lpstrTitle = _T("打开实时图"); // 打开文件对话框的标题名 dlg.m_ofn.lpstrFilter=_T("image files (*.jpg) \0*.jpg\0image files (*.bmp)\0*.bmp\0All Files (*.*) \0*.*"); if( dlg.DoModal() != IDOK ) // 判断是否获得图片 return; CString mPath = dlg.GetPathName(); // 获取图片路径 # m_mat1 = cv::imread( LPCSTR(mPath), 1 ); // 读取图片、缓存到一个局部变量 ipl 中 if( !m_mat1.data ) // 判断是否成功载入图片 return; DrawMatToHDC( m_mat1, IDC_Showing ); // 调用显示图片函数 } void CMat_openimgDlg::DrawMatToHDC(cv::Mat img, UINT ID)//------对应新版Mat 的显示函数 { CDC *pDC = GetDlgItem(ID)->GetDC(); HDC hDC= pDC->GetSafeHdc(); CRect rect; GetDlgItem(ID)->GetClientRect(&rect); CvvImage cimg; IplImage ipm = img; cimg.CopyOf(&ipm); cimg.DrawToHDC_SCALE(hDC,&rect); ReleaseDC(pDC); }

mfc中,成员函数如何去调用另一个成员函数中的变量

void CMymfcDlg::OnBnClickedReadimg() { // TODO: Add your control notification handler code here CFileDialog dlg(TRUE, _T("*.bmp"), NULL,OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY, _T("Image Files(*.jpg;*.png;*.bmp)|*.jpg;*.png;*.bmp|All Files (*.*)|*.*||"), NULL);// 选项图片的约定 dlg.m_ofn.lpstrTitle = _T("Open Image"); // 打开文件对话框的标题名 if( dlg.DoModal() != IDOK ) // 判断是否获得图片 return; CString mPath = dlg.GetPathName(); // 获取图片路径 IplImage* ipl = cvLoadImage( mPath, 1 ); // 读取图片、缓存到一个局部变量 ipl 中 if( !ipl ) // 判断是否成功载入图片 return; if( TheImage ) // 对上一幅显示的图片数据清零 cvZero( TheImage ); ResizeImage( ipl ); // 对读入的图片进行缩放,使其宽或高最大值者刚好等于 256,再复制到 TheImage 中 ShowImage( TheImage, IDC_ShowImg ); // 调用显示图片函数 cvReleaseImage( &ipl ); // 释放 ipl 占用的内存其中包含了两个新的成员函数 } void CMymfcDlg::OnBnClickedGray() { //如何在此函数中获取上个成员函数的mPath }

MFC中Cstring 中的Format函数

![图片说明](https://img-ask.csdn.net/upload/201512/14/1450054408_179409.png) 这个错误是什么啊 该怎么调试

cstring的remove函数中的参数如何设置为一个cstring的变量名

例如 CString a; CString b; 我想在a中找到与b相同的字符段,然后用remove删除b在a中 但是remove的参数用b这个变量名字表示;怎么弄、求指导

CString remove 中的参数怎么用一个cstring类型的变量

假设 CString a ,b; 我想在a中删除含有b,remove的参数设置为b,怎么使用,求大神指导阿!

在VS2010,Unicode字符集环境下,如何将float类型转换成CString类型?

用format不好使,求指导 或者这样也可以,我想用sprintf函数将几个浮点型的数输入到一个char类型的数组中,然后将该数组转换成LPCTSTR格式,这样才能够插入LISTBOX 控件中,感觉太麻烦,有没有什么好的办法?相关代码如下: ``` char Ana[50]; int num=8; float tcost=1.0394; float tpsnt=33.244; sprintf(Ana,"aa","%d%f%f",num,tcost,tpsnr); m_Ana.Addstring((LPCTSTR)Ana);//m_Ana为LISTBOX控件变量 ``` 代码不报错,但是插入的都是空白。

C++中CString转换为byte

假如我要把CString类型的23转换为十六进制的23保存在byte[0]中该怎么写

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 开发接口 c# 中方法上面的限制 c# java 时间戳 c#单元测试入门 c# 数组转化成文本 c#实体类主外键关系设置 c# 子函数 局部 c#窗口位置设置 c# list 查询 c# 事件 执行顺序
立即提问
相关内容推荐