我被折磨疯了,我在C++中调用C文件的函数,声明extern "C" FuncName(...),编译error C2732;去掉Extern"C",联接出错。

Truman 2002-06-19 11:42:25
我在C++中调用C文件的函数,声明extern "C" FuncName(...),编译出错error C2732: linkage specification contradicts earlier specification for 'see FuncName

去掉Extern"C",联接出错error LNK2001: unresolved external symbol "void __cdecl FuncName(struct Globals *,void *)" (?seed_proc_sync_data@@YAXPAUSEEDGlobals@@PAX@Z)

what would i do?what would i do?
...全文
813 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
code_cold 2002-06-19
  • 打赏
  • 举报
回复
When:
在一个 .c文件里实现,在一个.h里声明。
cpp文件包含这个.h时用extern "C"括起

若无 *.c file, 用不到 extern "C"
Truman 2002-06-19
  • 打赏
  • 举报
回复
不可能,我另一个函数的头文件包含进来后,反而编译出错了error C2733: second C linkage of overloaded function 'mycfuntion' not allowed.
把include放到外面,就好了,另两个函数的头文件却必须放到extern "C"{}里才行。
code_cold 2002-06-19
  • 打赏
  • 举报
回复
extern "C" 的目的是防止C++ COMPILE chang the functions name
#include 若不放extern "C" The cpp file's object 必然找不到The func
ieplayboy 2002-06-19
  • 打赏
  • 举报
回复
ok
Truman 2002-06-19
  • 打赏
  • 举报
回复
按卖柴火的小男孩所说,可以了,不过我还是比较晕,因为我在CPP里已经
include x.h了。为啥在extren "C"里还include?

AND,我马上给你分,sale match little boy.
qindq 2002-06-19
  • 打赏
  • 举报
回复
错误说 FuncName *.cpp中的 extern "C" 与头文件中的定义不一致(因为头文件中没有)

正常的用法:
头文件中
extern "C" void FuncName();

CPP中
void FuncName()
{
...
}
yu_hl 2002-06-19
  • 打赏
  • 举报
回复
在一个 .c文件里实现,在一个.h里声明。
cpp文件包含这个.h时用extern "C"括起:
extern "C" {
#include "x.h"
}

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • AIGC Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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