在同一项目中调用C层的C++函数可以通过以下步骤实现:
// example.cpp
#include <iostream>
extern "C" {
void cFunction() {
std::cout << "This is a C++ function called from C." << std::endl;
}
}
在Linux系统下,可以使用以下命令编译生成动态链接库:
g++ -shared -o example.so example.cpp
在Windows系统下,可以使用以下命令编译生成动态链接库:
g++ -shared -o example.dll example.cpp
// example.c
#include <stdio.h>
#include <dlfcn.h>
typedef void (*CFunction)();
int main() {
void* handle = dlopen("./example.so", RTLD_LAZY);
if (handle == NULL) {
printf("Failed to load the dynamic library.\n");
return 1;
}
CFunction cFunc = (CFunction)dlsym(handle, "cFunction");
if (cFunc == NULL) {
printf("Failed to find the C++ function.\n");
dlclose(handle);
return 1;
}
cFunc();
dlclose(handle);
return 0;
}
在Linux系统下,可以使用以下命令编译C层代码:
gcc -o example example.c -ldl
在Windows系统下,可以使用以下命令编译C层代码:
gcc -o example example.c -L. -lexample
./example
这样,就可以在同一项目中成功调用C层的C++函数。请注意,以上示例仅为演示目的,实际项目中可能需要根据具体情况进行适当的修改。
领取专属 10元无门槛券
手把手带您无忧上云