CentOS实战001:解决cpp文件编译成so文件的问题

2025-07-13 05:12:43

1、这里我备份了一份,命名为dome.cpp我们拿这个来编译,编译命令: g++ -o dome.so -shared -fPIC dome.cpp,如果成功则会在当前目录下生成一个dome.so的文件,我们可以看到系统提示很多警告和错误,警告我们暂时不管,先解决错误问题:

CentOS实战001:解决cpp文件编译成so文件的问题

3、在windows上编译时没有任何问题,但是到了centos上就出现了_splitpath_s在此作用阄莱决胪域中尚未声明的错误提示,找了很久才发现原来 linux 下是没有_splitpath_s函数的,所以无法识别该函数。 既然linux不支持_splitpath_s函数我就不用,那我就用字符串截取,现将获取到的char*转成string类型,然后再通过查找最后一个“/”来区分,这样我们同样可以获取到路径中的文件名(这里要注意获取到的文件名是带后缀的)

CentOS实战001:解决cpp文件编译成so文件的问题

4、问题二:‘fopen_s’在此作用域中尚未声明 这里之所以用fopen_s是因为在windows调试的时候提示不安全,建议使用fopen_s或者在配置文件中添加_CRT_SECURE_NO_WARNINGS,我当时选择了使用fopen_s错误 1 error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.既然在centos中报错了,那么我换回使用fopen试下,结果发现linux下不在报错,那么我再把windows上的配置改下即可。

CentOS实战001:解决cpp文件编译成so文件的问题

6、在windows中使用strlen只要调用了头文件#include <string>和空间名using namespace std;即可使用,但是在Linux中需要添加头文件#include <string.h>才行,所以只要在前面再加个头文件即可识别strlen函数了,这样错误信息我们就解决完了

CentOS实战001:解决cpp文件编译成so文件的问题

8、至于dome.cpp:212: 警告:算术表达式中使用了 NULL,既然linux不建议使用NULL,我们换了就成(我把NULL全换成了!=0),这样我们的所有错误和报警就都解决了。

CentOS实战001:解决cpp文件编译成so文件的问题
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢