总结从linux - windows 上(GCC与MSVC 2015) 移植C或者C++代码时候遇到的编译和链接问题

解决办法和修改办法的总体思想

1、在代码的语义和功能不变的情况下,进行c->c++的转变,消除编译器的跨平台编译报错问题;

2、遇到编译问题,先看编译器提示信息,然后逐个排查和定位,去解决问题。

 

 

1、当遇到c中的代码,数组使用动态变量初始化在GCC能编译通过,在MSVC上编译不过的时候解决办法

例如:

原版C: 

void func1(int number)

{

int a[number];

}

移植版C++

void func1(int number)

{

   std::vector<int> a(number);

}

2、当遇到c中的代码,某函数在不同的.c中实现了两次,且是同样的函数名称在GCC能编译通过,在MSVC上编译不过的时候解决办法

在报错的.cpp文件中,修改该声明和实现的相同函数名称的函数为另外一个名字

3、当遇到c中的代码,某函数在.cpp和.h文件都已经声明和实现过,在另外一个.cpp中调用该函数的时候,报错该函数符号在另外一个.cpp中是外部符号,无法识别在GCC能编译通过,在MSVC上编译不过的时候解决办法

找到该项目中的所有.h 试着删掉 以下的代码片段

#ifdef __cplusplus 
extern "C" { 
#endif

//一段代码

#ifdef __cplusplus 

#endif 

 

4、当遇到c中的代码,某宏定义的函数实现  在GCC能编译通过,在MSVC上编译不过的时候解决办法

在不变语义的情况下,改为函数

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/256849.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1 week110的zookeeper的安装 + zookeeper提供少量数据的存储

下面是在weekend110上的zookeeper的安装 在此之前&#xff0c;先进行快照备份。 在这里&#xff0c;为了后续的zookeeper配置需要&#xff0c;在/home/hadoop/下&#xff0c;新建data目录&#xff0c;再新建zookeeper-3.4.6目录&#xff0c;再新建zkdata目录。 默认情况下&…

学习笔记(46):Python实战编程-protocol

立即学习:https://edu.csdn.net/course/play/19711/343108?utm_sourceblogtoedu 1.protocol协议&#xff1a;主要用于窗体关闭监听&#xff0c;通过这个协议可以在窗体关闭前提示是否真的要关闭&#xff0c;这样可以防止用户误触导致数据的丢失 2.关键代码 #----------------…

linux yum命令详解

yum&#xff08;全称为 Yellow dog Updater, Modified&#xff09;是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理&#xff0c;能够从指定的服务器自动下载RPM包并且安装&#xff0c;可以自动处理依赖性关系&#xff0c;并且一次安装所有依赖的软体包…

linux配置Java环境变量(详细)

一. 解压安装jdk 在shell终端下进入jdk-6u14-linux-i586.bin文件所在目录&#xff0c; 执行命令 ./jdk-6u14-linux-i586.bin 这时会出现一段协议&#xff0c;连继敲回车&#xff0c;当询问是否同意的时候&#xff0c;输入yes&#xff0c;回车。之后会在当前目录下生成一个jdk1.…

在c++代码中关闭和启动另外一个pid进程号,共享内存数据使用

char * of_program_name "./AB"; 1、 pid getPidFromName(of_program_name); if (pid > 0) { ERROR("AB process still exispid %d\n", pid); if (kill(pid, SIGKILL)) //杀死进程 { fprintf(std…

提速XP操作系统

1、加速网上邻居 在Windows XP中访问网上邻居是相当恼人的&#xff0c;系统会搜索自己的共享目录和可作为网络共享的打印机以及计划任务中和网络相关的计划任务&#xff0c;然后才显示出来&#xff0c;显然这样速度就会比Windows 9x中慢很多。其实这些功能我们并没有使用上&…

学习笔记(47):Python实战编程-pack布局

立即学习:https://edu.csdn.net/course/play/19711/343109?utm_sourceblogtoedu pack布局&#xff1a; 1&#xff09;最常用的布局&#xff0c;顺序排列布局方法 2&#xff09;完成了简单的组件位置码放&#xff0c;但如果内部布局处理机制跟不上的话&#xff0c;也可能会达…

ASP.NET Web API 应用教程(一) ——数据流使用

相信已经有很多文章来介绍ASP.Net Web API 技术&#xff0c;本系列文章主要介绍如何使用数据流&#xff0c;HTTPS&#xff0c;以及可扩展的Web API 方面的技术&#xff0c;系列文章主要有三篇内容。 主要内容如下&#xff1a; I 数据流 II 使用HTTPS III 可扩展的Web API 文档…

JAVA类的构造方法

1,构造方法没有返回类型, 定义: []public] 方法名() {} 2,一个构造方法如果想调用同一类中的另一个构造方法,只能调用一个,并且要放在构造方法第一行 3,用this调用,如 1 public person(int i, int j) { 2 this(); //调用另一个构造方法,且放在第一行 3 } 转载于:https://www…

将字符串和数字合并动态写入

sprintf(tmpTime, "/media/AIlog/%02d_%02d_%.txt",100,200);

windows安装64位Pygame方法

因为官方网站http://www.pygame.org/download.shtml并没有提供64位的pygame&#xff0c;所以要找其他网站制作的64位安装文件。 如果你已经在你的64位开发环境中安装了32位的pygame&#xff0c; 那么在导入pygame包的时候&#xff0c; 会有提示&#xff1a; ImportError: DLL l…

学习笔记(48):Python实战编程-grid布局

立即学习:https://edu.csdn.net/course/play/19711/343110?utm_sourceblogtoedu grid布局&#xff1a;根据表结构进行的布局&#xff0c;索引为0行0列开始&#xff0c;最具代表性的即使电脑计算器的数字和符号按键布局 组件.grid(row 行索引号 &#xff0c; column 列索引号…

为什么“三次握手,四次挥手”?

前言&#xff1a; 如果你说你懂IT,你懂计算机网络&#xff0c;那么你会怎么解释“三次握手&#xff0c;四次挥手”&#xff1f; ---------------- 1.TCP报文段首部格式&#xff1a; 2.TCP建立连接图 -------------------------------------------- 符号说明 seq:"sequance…

学习笔记(49):Python实战编程-place布局

立即学习:https://edu.csdn.net/course/play/19711/343111?utm_sourceblogtoedu 1.place布局&#xff1a; 1&#xff09;最灵活的布局方式&#xff0c;是根据坐标点来进行组件的位置布局的 2&#xff09;确定坐标点后&#xff0c;组件从坐标点开始展开&#xff0c;即以指定…

cobbler基础安装

epel源安装rpm -ivh epel-release-6-8.noarch.rpmyum -y install cobbler httpd rsync tftp-server xinetd dhcp cobbler-web koan pykickstart* fence-agents* debmirror syslinux$$$$$$$$$$$启动cobbler服务/etc/init.d/cobblerd start$$$$$$$$启动httpd服务/etc/init.d/http…

[ActionScript 3.0] NetConnection建立客户端与服务器的双向连接

一个客户端与服务器之间的接口测试的工具 <?xml version"1.0" encoding"utf-8"?> <!--- - - - - - - - - - - - - - - - - - - - - - - - - * author:Frost.Yen * E-mail:871979853qq.com * create:2016-7-13上午12:10:20 - - - - - - - - - - …

C++ share_prt 简单设计和实现

C 比较烦恼的是内存的管理&#xff0c;new是简单&#xff0c;不够&#xff0c;delete偶尔就会忘记。或者说&#xff0c;出现&#xff0c;多个对象共享多一个内存&#xff0c;一个delete以后&#xff0c;导致其他也不能用的不良情况&#xff0c;所以就跑出了一个智能指针来进行管…

PID控制无人机

1、有效的办法就是&#xff0c;根据距离目标值的远近来调节云台的速度&#xff0c;离得远就转快一些&#xff0c;离得近就慢一些。这样就需要我们实时获取云台当前的实际角度&#xff0c;然后和目标角度做对比&#xff0c;根据差值来动态地调整云台的速度和方向。 2、根据无人…

学习笔记(50):Python实战编程-Frame

立即学习:https://edu.csdn.net/course/play/19711/343112?utm_sourceblogtoedu 1.Frame:是内嵌布局管理器&#xff0c;针对不同功能的组件进行区域划分&#xff0c;在各自的区域内可以使用不同的布局&#xff0c;但是总的frame布局方式还是一致的 2.以计算器为例 步骤&#…

SVN使用MySQL验证用户名密码(HTTP)

安装过程全部采用yum 1yum -y install subversion httpd mod_auth_mysql mod_dav_svn mod_ssl 使用MySQL验证是依赖于mod_auth_mysql 主要配置文件 12345678910111213141516171819202122<Location /svn > DAV svn SVNParentPath /var/www/html/svn AuthType Basic AuthNa…