缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int

XYZ4321 2009-01-04 05:36:39
typedef (_cdecl *DllExtCall)(PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,void*,UINT); //声明一个函数指针,可以指向dll中的函数
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
vc++6.0能够通过,为何这个vs2005就无法通过呢
...全文
13765 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
a302674281 2011-09-06
  • 打赏
  • 举报
回复
我也遇到类似问题,VC6.0没错,VC2008出错
mm2011 2011-05-21
  • 打赏
  • 举报
回复
添加 using namespace std;
nodeserver 2010-07-21
  • 打赏
  • 举报
回复
楼上的才是正解。名称空间的冲突!
joewan 2010-04-10
  • 打赏
  • 举报
回复
有可能是名字空间冲突导致的

拿string为例:
假如在多个库中存在string,在lib包含目录中也存在多种对string的不同定义,例如boost和std中的
为了解决冲突,可以在文件开头添加:
using namespace std;
或者using std::string;

[Quote=引用楼主 xyz4321 的回复:]
typedef (_cdecl *DllExtCall)(PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,void*,UINT); //声明一个函数指针,可以指向dll中的函数
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
vc++6.0能够通过,为何这个vs2005就无法通过呢
[/Quote]
EKEKZ 2009-12-14
  • 打赏
  • 举报
回复
我也遇到了
raindrop52 2009-01-16
  • 打赏
  • 举报
回复
等待答案中...
nickyoo 2009-01-07
  • 打赏
  • 举报
回复
真不知道VC6有什么好的
切换文件看的时候,看的我要疯了,~~~~
shilei_815 2009-01-07
  • 打赏
  • 举报
回复
那楼主就换一种思路来实现喽,要不然就换个编译器,这种问题好难解释哦!
XYZ4321 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 XYZ4321 的回复:]
引用 15 楼 nullah 的回复:
不要因为编译器耗了时间

确实,我应该怎么做?
[/Quote]
不要…………
那么要怎么做呢?高人给出答案,谢谢
XYZ4321 2009-01-07
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 jcwKyl 的回复:]
引用 12 楼 XYZ4321 的回复:
引用 3 楼 jcwKyl 的回复:
这种问题的答案很没意思。换VC6以上版本的编译器吧。

我没有说清楚我用的是vs2005吗

呵呵,我的意思是VC6不严格,如果有高版本的编译器,那就不要相信VC6的结果。
对于你遇到的错误,14楼的方法也许是对的。或者你在project中把entry point改为你程序中的main函数的名称。
[/Quote]
已经可以了,谢谢:)
jcwKyl 2009-01-06
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 XYZ4321 的回复:]
引用 3 楼 jcwKyl 的回复:
这种问题的答案很没意思。换VC6以上版本的编译器吧。

我没有说清楚我用的是vs2005吗
[/Quote]
呵呵,我的意思是VC6不严格,如果有高版本的编译器,那就不要相信VC6的结果。
对于你遇到的错误,14楼的方法也许是对的。或者你在project中把entry point改为你程序中的main函数的名称。
sagegz 2009-01-05
  • 打赏
  • 举报
回复
改用VS2005吧!
XYZ4321 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 nullah 的回复:]
不要因为编译器耗了时间
[/Quote]
确实,我应该怎么做?
nullah 2009-01-05
  • 打赏
  • 举报
回复
不要因为编译器耗了时间
星羽 2009-01-05
  • 打赏
  • 举报
回复
vs2005 下你要用c编译才能编译通过

修改工程属性 或文件属性c/c++ -> advanced -> compile as 为 Compile as C Code (/TC)
XYZ4321 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 chen_de_sheng 的回复:]
工程属性->C/C++->命令行->输入 /wd4430 然后再编译试试
[/Quote]
这个是什么意思呢?
XYZ4321 2009-01-05
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jcwKyl 的回复:]
这种问题的答案很没意思。换VC6以上版本的编译器吧。
[/Quote]
我没有说清楚我用的是vs2005吗
XYZ4321 2009-01-05
  • 打赏
  • 举报
回复
已经使用了vs2005,so出现很多错误。
谢谢,现在又出现很多错误。
代码在vc6.0下面毫无错误
1>正在编译...
1>testexternal.cpp
1>d:\tbase\externalcall\externalcall\testexternal.cpp(37) : warning 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\microsoft visual studio 8\vc\include\string.h(74) : 参见“strcpy”的声明
1>正在编译资源清单...
1>正在链接...
1>MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
1>D:\tBase\externalcall\Debug\externalcall.exe : fatal error LNK1120: 1 个无法解析的外部命令
1>生成日志保存在“file://d:\tBase\externalcall\externalcall\Debug\BuildLog.htm”
1>externalcall - 2 个错误,1 个警告
========== 生成: 0 已成功, 1 已失败, 0 最新, 0 已跳过 ==========
arong1234 2009-01-04
  • 打赏
  • 举报
回复
很显然你函数指针类型没有给出函数返回值。vc6不错只是因为它不够严格。
[Quote=引用楼主 XYZ4321 的帖子:]
typedef (_cdecl *DllExtCall)(PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,void*,UINT); //声明一个函数指针,可以指向dll中的函数
error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
vc++6.0能够通过,为何这个vs2005就无法通过呢
[/Quote]
pluminsnow 2009-01-04
  • 打赏
  • 举报
回复
我看定义函数指针好像没有返回类型呢?随便+一个看看。
typedef int (_cdecl *DllExtCall)(PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,PCSTR,UINT,void*,UINT); //声明一个函数指针,可以指向dll中的函数
加载更多回复(7)

65,201

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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