请问如何在c文件中调用c++文件中的函数?

sea33 2003-04-01 03:46:48
请问如何在c文件中调用c++文件中的函数?我知道有一个 extern "C" , 但是好像加上去也没什么用,编译时出现 undefined reference 的错误。
...全文
145 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sea33 2003-04-01
  • 打赏
  • 举报
回复
多谢xorong(末日风暴) !
谢谢大家!
sea33 2003-04-01
  • 打赏
  • 举报
回复
多谢ckacka(小红帽)
疯狂的魔法 2003-04-01
  • 打赏
  • 举报
回复
你用的是C编译器还是C++编译器?
c++文件是什么文件?是静态库文件还是动态库文件还是源代码?
如果用的是C编译器
如果是动态库文件的化,C可以调用
如果是静态库文件的化,C无法调用
如果所源代码,编译器都不认识的语法嘛
如果用的是C++编译器
哪里都可以调用啊
直接在C的函数里调用就好了
比如:
extern "C" void func();
void func()
{
CLASS instance;
instance.member_function();
}
ckacka 2003-04-01
  • 打赏
  • 举报
回复
补充一下,你的 c++ 文件里面的函数也应该有 PASCAL 的申明
ckacka 2003-04-01
  • 打赏
  • 举报
回复



首先,你在你的 .h 文件里面,把你的函数申明为 _stdcall , c++ 里面也是,然后先编译成 .obj ,再搭配上你的头文件,就可以了!

注意,你的头文件不应该包含任何多余的代码或者指令,只应该有函数的申明,比如:

extern "C" int PASCAL EXPORT openDirectIO(HWND hl);

(说明:PASCAL 和 _stdcall 在意义上等价)


Bandry 2003-04-01
  • 打赏
  • 举报
回复
既然是混合编程,为什么不把“它”定义为C函数了?这样的话C\C++文件不就都可以使用了吗?
sea33 2003-04-01
  • 打赏
  • 举报
回复
我的程序是c和c++混编的,这种情况下在c文件中怎样调用c++文件中的函数
mubaosen 2003-04-01
  • 打赏
  • 举报
回复
extern "C" 是在C++中调用C编译器编译的函数的,现在基本上没有人用C编译器调用C++写的函数。一般来说用C++编译器的库都是按照C++的规则(好象你也可以指定C规则),而C较C++也现的晚所以也不太可能在C中会对此做直接支持,我还没见过相关的资料。当然我所说的C编译器是纯C的编译器,而不是现在流行的C/C++编译器。
sea33 2003-04-01
  • 打赏
  • 举报
回复
一定要用dll吗?
fansses 2003-04-01
  • 打赏
  • 举报
回复
dll

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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