C++ (Bug)--调 C文件,报错 xxxx.0 not fountt, x86

C++调用C函数详解


原文:http://blog.youkuaiyun.com/juanjuan888/article/details/6889843


C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个C 函数的声明如下:

void foo(int x, int y);
该函数被C 编译器编译后在库中的名字为_foo,而C++编译器则会产生像_foo_int_int之类的名字用来支持函数重载和类型安全连接。由于编译后的名字不同,C++程序不能直接调用C 函数。C++提供了一个C 连接交换指定符号extern“C”来解决这个问题。例如:
extern “C”
{
   //放入 C头文件  
}

extern “C”
{
#include “xxx.h”
// 其它C 头文件
}
这就告诉C++编译译器,函数 foo 是个C 连接,应该到库中找名字_foo 而不是找_foo_int_int。C++编译器开发商已经对C 标准库的头文件作了extern“C”处理,所以我们可以用#include 直接引用这些头文件。

D:\STM32CUBECLT\CMake\bin\cmake.exe -DCMAKE_BUILD_TYPE=Debug -DCMAKE_MAKE_PROGRAM=D:/STM32CUBECLT/Ninja/bin/ninja.exe -DCMAKE_C_COMPILER=D:/STM32CUBECLT/GNU-tools-for-STM32/bin/arm-none-eabi-gcc.exe -DCMAKE_CXX_COMPILER=D:/STM32CUBECLT/GNU-tools-for-STM32/bin/arm-none-eabi-c++.exe -G Ninja -S D:\el\1231123213\MDK-ARM\stm32\xuexi -B D:\el\1231123213\MDK-ARM\stm32\xuexi\cmake-build-debug -- The C compiler identification is GNU 13.3.1 -- The CXX compiler identification is GNU 13.3.1 -- Detecting C compiler ABI info -- Detecting C compiler ABI info - failed -- Check for working C compiler: D:/STM32CUBECLT/GNU-tools-for-STM32/bin/arm-none-eabi-gcc.exe -- Check for working C compiler: D:/STM32CUBECLT/GNU-tools-for-STM32/bin/arm-none-eabi-gcc.exe - broken CMake Error at D:/STM32CUBECLT/CMake/share/cmake-3.28/Modules/CMakeTestCCompiler.cmake:67 (message): The C compiler "D:/STM32CUBECLT/GNU-tools-for-STM32/bin/arm-none-eabi-gcc.exe" is not able to compile a simple test program. It fails with the following output: Change Dir: 'D:/el/1231123213/MDK-ARM/stm32/xuexi/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-s6c5qr' Run Build Command(s): D:/STM32CUBECLT/Ninja/bin/ninja.exe -v cmTC_fb1bb [1/2] D:\STM32CUBECLT\GNU-tools-for-STM32\bin\arm-none-eabi-gcc.exe -std=gnu11 -fdiagnostics-color=always -o CMakeFiles/cmTC_fb1bb.dir/testCCompiler.c.obj -c D:/el/1231123213/MDK-ARM/stm32/xuexi/cmake-build-debug/CMakeFiles/CMakeScratch/TryCompile-s6c5qr/testCCompiler.c [2/2] C:\WINDOWS\system32\cmd.exe /C "cd . && D:\STM32CUBECLT\GNU-tools-for-STM32\bin\arm-none-eabi-gcc.exe CMakeFiles/cmTC_fb1bb.dir/testCCompiler.c.obj -o cmTC_fb1bb.exe -Wl,--out-implib,libcmTC_fb1bb.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ." FAILED: cmTC_fb1bb.exe C:\WINDOWS\system32\cmd.exe /C "cd . && D:\STM32CUBECLT\GNU-tools-for-STM32\bin\arm-none-eabi-gcc.exe CMakeFiles/cmTC_fb1bb.dir/testCCompiler.c.obj -o cmTC_fb1bb.exe -Wl,--out-implib,libcmTC_fb1bb.dll.a -Wl,--major-image-version,0,--minor-image-version,0 -lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 && cd ." Cannot create temporary file in C:\Users\张宇鹏\AppData\Local\Temp\: No such file or directory arm-none-eabi-gcc.exe: internal compiler error: Aborted signal terminated program collect2 Please submit a full bug report, with preprocessed source (by using -freport-bug). See <https://gcc.gnu.org/bugs/> for instructions. ninja: build stopped: subcommand failed. CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:28 (project) -- Configuring incomplete, errors occurred! [已完成] 请告诉我发生的情况,并告诉我怎么解决
07-14
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值