社区
C语言
帖子详情
请问如何在c文件中调用c++文件中的函数?
sea33
2003-04-01 03:46:48
请问如何在c文件中调用c++文件中的函数?我知道有一个 extern "C" , 但是好像加上去也没什么用,编译时出现 undefined reference 的错误。
...全文
166
10
打赏
收藏
请问如何在c文件中调用c++文件中的函数?
请问如何在c文件中调用c++文件中的函数?我知道有一个 extern "C" , 但是好像加上去也没什么用,编译时出现 undefined reference 的错误。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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
在C
中
调用
C++
函数
使用extern "C"可以实现在C语言代码
中
调用
C++
函数
的功能。实例分为5个
文件
:CallCpp.c CppPrint.cpp CppPrint.h CWrapper.cpp CWrapper.h其
中
CppPrint.cpp
中
是
C++
代码的实现;/* * CppPrint.h * */ #ifndef CPP_PRINT_H #define CPP_PRINT_H #include
在 C
函数
中
调用
C++
类成员
函数
的正确方式
摘要:本文介绍了如何在C
函数
中
调用
C++
类成员
函数
的方法。由于C和
C++
语言机制不同,直接
调用
不可行。关键是通过extern "C"封装
C++
类接口,使用void*传递对象指针,并提供创建、操作和销毁的C风格
函数
。文章给出了完整示例代码,包括
C++
类定义、C接口封装和C
调用
方式,并说明了编译链接的注意事项。这种方法适用于C项目复用
C++
模块或提供跨语言API接口,实现安全高效的功能复用。
C++
学习——在C
文件
中
调用
C++
文件
中
的
函数
1.cpp
文件
中
的内容 #include "mytest.h" #include <iostream> using namespace std; int add(const int a, const int b) { cout << "a=" << a << endl; cout << "b=" << b << endl; return (a + b); } 2.hpp
文件
中
的内容 在
函数
声明时
c语言
文件
调用
c++
函数
1.CPP
文件
中
的内容 #include “mytest.h” #include using namespace std; int add(const int a, const int b) { cout << “a=” << a << endl; cout << “b=” << b << endl; return (a + b); } 2.头
文件
中
的内容 在
函数
声明时添加extern “C”,就可以在C
中
调用
。为了同时可以在
C++
中
C与
C++
的
函数
相互
调用
C 和
C++
的
函数
可以相互
调用
,但需要一些特殊的注意事项,因为它们有不同的编译和链接规则以及一些语法差异。 链接规则: C 语言的链接器通常使用 C 标准的
函数
命名和
调用
约定,而
C++
链接器使用
C++
的
函数
命名和
调用
约定。这意味着
C++
可以支持
函数
重载和运算符重载,而 C 不能。 如果你要在
C++
中
调用
C
函数
,需要使用 extern "C" 块将 C
函数
声明包裹起来,以告诉
C++
编译器使用 C 的链接规则。
C语言
70,037
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章