gcc - 如何更改 GNU C++ 程序的入口点函数?
问题描述
如何更改 GNU c++ 程序的入口点功能?
我能够更改 GCC C 程序的入口点。但是对 C++ 使用相同的编译选项会给我一个错误:找不到入口符号。
#include <stdio.h>
#include <stdlib.h>
int test(int argc, char *argv[]) ;
int main(int argc, char *argv[]);
int main(int argc, char *argv[])
{
printf("HELLO main\n" );
printf("PRESS ANY KEY TO EXIT\n");
return (0);
}
int test(int argc, char *argv[])
{
int val;
printf("HELLO test()\n");
val = main(argc, argv);
exit(val) ;
}
我可以使用 gcc 编译和运行:
gcc -etest entry.c -o entry
但用 g++ 编译不起作用:
$ g++ -etest entry.c -o entry
/usr/bin/ld: warning: cannot find entry symbol test; defaulting to 0000000000000610
解决方案
该test()
函数必须声明extern "C"
为避免 C++ 名称混淆:
extern "C" int test(int argc, char *argv[]);
推荐阅读
- java - Libgdx 类不绘制纹理
- angular - Redux 和 3rd 方库
- powershell - Powershell - 组织者电子邮件地址
- mysql - 熊猫导入未插入所有行
- excel - VBA:使用 DoEvents 不同时间长度的代码暂停
- java - 通过@ResponseBody 返回时更改 DTO JSON 中的日期格式
- bash - bash脚本中的嵌套while循环-内部被跳过
- r - 从 Rasterbrick 中的较低层提取数据
- reactjs - 如何更改 Office Fabric UI 导航组件上的悬停颜色
- javascript - Fullcalendar Now() 指标定位错误