function-style conversion to builtin type takes only one argument

来源:互联网 发布:长期股权投资转换知乎 编辑:程序博客网 时间:2024/05/17 01:06

今天同事遇到一个问题:error C2564:‘xxxx’:a function-style conversion to a built-in type can only take one argument

之前没有遇到过,于是到网上查了一下,发现如下文章的error场景与他的十分类似:

http://forums.codeguru.com/showthread.php?327586-C-Newbie-What-have-I-done-wrong

文章中提到的原因是:

typedef 定义的函数指针,是一种类型。我们调用方法要使用该类型的变量。


下面是我的测试:

dll:

头文件:其中DLLEXPORT是定义在stdafx.h中 #define DLLEXPORT

#ifdef DLLEXPORT#define MY_API _declspec(dllexport)#else#define MY_API _declspec(dllimport)#endifextern "C" {MY_API int send(char* thisNumber, int flag);}

源文件

#include "stdafx.h"#include "ErrorTestDll.h"#include <iostream>int send(char* thisNumber, int flag) {printf("hello world! number:%c, flag:%d \n", *thisNumber, flag);return 1;}

调用dll的控制台工程代码:

#include "stdafx.h"#include <Windows.h>typedef int (*mySend)(char* thisNumber, int flag);int _tmain(int argc, _TCHAR* argv[]){HINSTANCE dllHandle = NULL;dllHandle = LoadLibrary("E:\\test\\ErrorTestDll\\Debug\\ErrorTestDll.dll");mySend fp = (mySend)GetProcAddress(dllHandle, "send");mySend fp2;char ch = 'A';//int t = fp(&ch, 1); // 正确的调用形式//int t = fp2(&ch, 1); int t = mySend(&ch, 1); // 文中出错是由于这样的调用。printf("t : %d", t);while(1);return 0;}

编译结果:

error C2564: 'mySend' : a function-style conversion to a built-in type can only take one argument


如测试结果所示:使用函数指针的定义直接当作函数来调用,确实是不行的。

其实导致错误的原因很简单,就是没有正确使用函数指针。

另外,上述测试代码中使用dll的方式,也值得我们参考:

       1、它是动态加载dll的,

       2、它没有依赖dll的头文件,仅仅是通过GetProcAddress指定的函数名定位到函数的。

       3、typedef定义的函数指针,让我们知道dll的本质,我只要知道你的接口(dll)是什么样子的,我就可以调用你。

调用dll的过程非常简洁,我们可以应用到自己的项目中。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 不爱吃饭偏瘦怎么办 一岁半小宝宝不爱吃饭怎么办 家养的小鸡打架怎么办 小鸡关在一起打架怎么办 小孩感冒出汗多怎么办 宝宝感冒出汗了怎么办 出汗多怎么办%3f 孩子睡觉出汗多怎么办 三年级孩子成绩下滑怎么办 幼儿数学不开窍怎么办 孩子一年级学习跟不上怎么办 孩子学习不认真怎么办 孩子平时不细心怎么办? 脖子出现黑圈怎么办 简历留白太多怎么办 excel数字外面加个圈怎么办 电脑输入法数字数不上怎么办 大班教案迷路了怎么办 迷路了怎么办活动反思 头突然眩晕是怎么办 孩子学习拖拉懒惰怎么办 头发晕想睡觉怎么办 五年级错别字多怎么办 入党志愿书写错字怎么办 高中不会写作文怎么办 考试不会写作文怎么办 高考不会写作文怎么办 孩子总是写错字怎么办 小孩总是写错字怎么办 孩子马虎不认真怎么办 小孩计算老出错怎么办 小学生计算总出错怎么办 高中考试总粗心怎么办 孩子考试总是粗心怎么办 一年级孩子考试粗心怎么办 老师说孩子粗心怎么办 计算题总出错怎么办 计算题总是出错怎么办 数学老是计算错误怎么办? 苗木抵扣计算错误怎么办 表格中计算错误怎么办