c和c++混合编译问题

Levin_Kai 2018-07-03 04:32:08
在vs2010中,imagecompare.cpp负责调用open vc的一些接口对比图片,之后调用qiniutest.c中的函数上传图片。

1 在qiniutest.h中声明了该函数:
void QiNiuUploadeFileWithPath(const char* pLocalFilePath);

2 qiniutest.c中包含了上述头文件:
#include "qiniutest.h"
void QiNiuUploadeFileWithPath(const char* pLocalFilePath)
{
InitQiNiu();

demoUploadFile(&client, bucketName, &mac, pLocalFilePath);

QiNiuExit();
}

3 imagecompare.cpp也包含了上述头文件,并用__cplusplus宏控住:
#ifdef __cplusplus
extern "C" {
#endif
#include "qiniutest.h"
#ifdef __cplusplus
}
#endif
......
int main(int argc, char** argv)
{
...
QiNiuUploadeFileWithPath(pLocalFilePath);
...
}

最后编译的时候提示:1>imagecompare.cpp(69): error C2065: “QiNiuUploadeFileWithPath(pLocalFilePath)”: 未声明的标识符

在网上没搜到解决方法,新建了一个工程测试带main函数的cpp文件调用c文件中的函数没问题,有遇到过此问题的吗?
...全文
328 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Levin_Kai 2018-07-04
  • 打赏
  • 举报
回复
已找到问题,cpp中引用函数最后竟然是个中文括号,严重的低级错误。


大家写代码的时候一定要注意输入法不要打开,这种低级错误浪费时间浪费精力。
Levin_Kai 2018-07-04
  • 打赏
  • 举报
回复
引用 1 楼 zhao4zhong1 的回复:
1 在qiniutest.h中声明了该函数:
extern "C" void QiNiuUploadeFileWithPath(const char* pLocalFilePath);


@赵4老师

赵老师你好,这个方法试过,不生效,今天发现在点击启动调试的时候qiniutest.c没参与编译,在里面加上abc字样不报错可以证明。

然后我把这个c文件和它的头文件换了个文件夹,把路径加到了项目设置 vc++包含路径中,可以参与编译了,但是编译到imagecompare.cpp的时候还是会报这个错误。

第一次遇到这种问题,平时用vs写代码少一些。
轻箬笠 2018-07-04
  • 打赏
  • 举报
回复
哈哈,幸亏vs会提示括号问题。否则难免会出现这种低级错误
赵4老师 2018-07-04
  • 打赏
  • 举报
回复
偶遇到类似问题都是用
“每次用/*...*/注释掉不同部分再重新编译,直到定位到具体语法出错的位置。”
的方法解决的。
赵4老师 2018-07-04
  • 打赏
  • 举报
回复
引用 3 楼 kailaihui 的回复:
已找到问题,cpp中引用函数最后竟然是个中文括号,严重的低级错误。


大家写代码的时候一定要注意输入法不要打开,这种低级错误浪费时间浪费精力。

关于自己是否适合编程的很简单的测试:
在报纸或杂志上随便找一段约1000字的文章,在Word中输入一遍。输完后再参考下面答案:

A里面有10处以上文字或标点错误
B里面没有文字或标点错误并敢为此跟人打赌
C里面没有文字或标点错误并且字体和排版完全与原稿一致
D打印在半透明的纸上和原稿重叠在一起检查一模一样,且自我感觉很有成就感

A不适合编程(理由:打字准确度偏低、粗心大意)
B初级程序员(理由:打字准确度很高、认真细致、自信、理解全角半角概念
C高级程序员(理由:在B的基础上理解字体和排版也是电脑打印的重要因素、但相比D还不够偏执、精益求精、结果可验证)
D软件项目经理(理由:能针对项目给出令人信服的细致到极点的需求说明和典型测试用例。用户几乎挑不出毛病。专业!)

如果想从A变成B的话,到我的资源http://download.csdn.net/detail/zhao4zhong1/4084259里面下载“适合程序员的键盘练习”
赵4老师 2018-07-03
  • 打赏
  • 举报
回复
1 在qiniutest.h中声明了该函数:
extern "C" void QiNiuUploadeFileWithPath(const char* pLocalFilePath);

3,881

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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