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

问题描述

调用有参数为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相关的注释掉,就不会出现问题,大牛帮忙!!!

解决方案

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

解决方案二:

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

时间: 2024-10-30 05:35:15

cstring-调用有参数为CString类型的函数,就会出现LNK2019的错误的相关文章

oracle-Java调用存储过程一直出现:调用 'TEST' 时参数个数或类型错误

问题描述 Java调用存储过程一直出现:调用 'TEST' 时参数个数或类型错误 解决方案 看下你给进去的参数的数据类型 和 你定义过程的数据类型是否都一直 解决方案二: 你这明显是传入的参数个数和存储过程的参数不一样啊.你直接调试下存储过程,看让你输入几个参数

c++-调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么。。

问题描述 调用C++写的SDK包,所提供的函数位于返回值类型和函数名之间的参数是什么.. 如图的"APICALL" 我调用dll时忽略它可以吗.. 解决方案 APICALL 应该只是一个简单的.空的宏定义,调用时可以不用管 它的作用只是标识函数是系统定义的 API 解决方案二: 函数调用约定.描述参数入栈.清栈方式等. 解决方案三: 不可以啊,这是调用约定,导入导出之类东西,错了函数调用出错,或者编译出问题 解决方案四: 如果是你自己写这个DLL 头文件里面的#if 需要抄下来 编写的

C语言函数的调用与参数

如果一个函数要使用参数,它就必须定义接受参数值的变量.4.3.1 形式参数与实际参数函数定义时填入的参数我们称之为形式参数,简称形参,它们同函数内部的局部变量作用相同.形参的定义是在函数名之后和函数开始的花括号之前.调用时填入的参数,我们称之为实际参数,简称实参.必须确认所定义的形参与调用函数的实际参数类型一致,同时还要保证在调用时形参与实参的个数出现的次序也要一一对应.如果不一致,将产生意料不到的结果.与许多其它高级语言不同,(是健壮的,它总要做一些甚至你不希望的事情,几乎没有运行时错误检查,

Java方法的参数和返回类型统一为Map是否合理?

问题描述 开发一个Web应用. 主管要求 所有业务逻辑的Java方法参数和返回类型必须统一为Map类型.理由是将来扩展时接口不用修改.而且有多返回值的方法也好处理但是这样一来.返回一个String都要写成 Map resultMap = doXXXXX(paramMap);String result = (String)resultMap.get("resultStr");返回一个VOMap resultMap = doXXXXX(paramMap);XXXXVO resultVO =

C#线程调用带参数的方法

在 .NET Framework 2.0 版中,要实现线程调用带参数的方法有两种办法. 第一种:使用ParameterizedThreadStart. 调用 System.Threading.Thread.Start(System.Object) 重载方法时将包含数据的对象传递给线程. 使用 ParameterizedThreadStart 委托不是传递数据的类型安全的方法,因为 System.Threading.Thread.Start(System.Object) 方法重载接受任何对象. 这

ASP调用带参数存储过程的几种方式_存储过程

ASP调用带参数存储过程的几种方式     选择自 hxfwsk 的 Blog   关键字   存储过程  出处      作者: 讨饭猫 ASP调用带参数存储过程的几种方式 最近有很多的朋友问到调用存储过程的问题,这里简单介绍几种ASP调用带参数存储过程的方法. 1 这也是最简单的方法,两个输入参数,无返回值: set connection = server.createobject("adodb.connection") connection.open someDSN  Conne

C++动态分配和撤销内存以及结构体类型作为函数参数_C 语言

C++动态分配内存(new)和撤销内存(delete) 在软件开发过程中,常常需要动态地分配和撤销内存空间,例如对动态链表中结点的插入与删除.在C语言中是利用库函数malloc和free来分配和撤销内存空间的.C++提供了较简便而功能较强的运算符new和delete来取代malloc和free函数. 注意: new和delete是运算符,不是函数,因此执行效率高. 虽然为了与C语言兼容,C++仍保留malloc和free函数,但建议用户不用malloc和free函数,而用new和delete运算

button调用dataGridView1_CellContentClick 参数该怎么写

问题描述 privatevoiddataGridView1_CellContentClick(objectsender,DataGridViewCellEventArgse){stringaaa=dataGridView1[1,e.RowIndex].value.tostring();//这里引用了e这个变量}在另外一个button想调用这个dataGridView1_CellContentClick,传入的DataGridViewCellEventArgs应该怎么写?谢谢 解决方案 解决方案二

java调用oracle存储过程,返回类型record

问题描述 如题,如果在java中调用oracle的存储过程,但输出参数是record类型的,如何获得结果啊createorreplacepackagerecordpackistypestudent_typeisrecord(idnumber,namevarchar2(20));end; createorreplaceprocedurerecordPro(v_recordoutrecordpack.student_type)isbeginselectid,nameintov_recordfroms