Linux 夸平台 移植 Win32

1.代码格式 

大量的 警告 不识别的字符(936),请保存为unicode 以免丢失数据,好多参考说忽略此警告。

但是很多错误都是由于这个警告引起的。将大量的.h .cpp 的utf 8 数据用txt 另存为一遍,ANSI则另存为Utf 8。

比较前后变化很小,跨平台换行符和空白符的问题,解决问题,警告也一些莫名错误消失。

2. Win32 和 Linux 的一些区别。

系统头文件,数据类型 ,函数类型,用宏区分。

#if defined(__linux__)

#elif defined(WIN32)

#endif

3.单独解决编译警告和错误,追求完美。

4.编译之后会有大量的错误 

LNK 2001

LNK 2005 

LNK 2019

等。原因可能有:

1.由于没有引入库,引入库 ,引入库路径解决。

2.库冲突  ,忽略特定默认的库。libcmtd.lib libcmt.lib  

3.第二部忽略了不该忽略的库,比如如果使用了 printf 就不应该忽略 libc.lib  libcd.lib

4. 在c/c++代码生->运行库 中选择正确的运行库  多线程 多线程调试  多线程DLL 多线程调试 DLL

引用他人的解答  

libcpmtd.lib(cerr.obj) : error LNK2001: 无法解析的外部符号 __CrtDbgReportW
libcpmtd.lib(stdthrow.obj) : error LNK2001: 无法解析的外部符号 __CrtDbgReportW

像这种情况,可以推测运用了错误的运行库包。

在一程序中使用不同类型的运行时库或使用调试和非调试版本的运行时库,则将收到此链接错误。

例如,编译一个文件以使用一种运行时库,而编译另一个文件以使用另一种运行时库(例如单线程运行时库对多线程运行时库),试图链接它们,则

将得到此警告。应将所有源文件编译为使用同一运行时库。

其实就是调正编译器选项参数:/MD、/MT 和 /LD

原文地址:https://www.cnblogs.com/liulebao/p/3474727.html