• 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

  • 相关阅读:
    linux 文件记录锁详解
    Linux fcntl函数详解
    大数相加
    信雅达面试题atoi函数实现
    linux getopt函数详解
    strcpy和memcpy的区别
    手把手写数据结构之栈操作
    手把手写数据结构之队列操作
    手把手写数据结构之双向链表操作
    ORACLE查询内存溢出
  • 原文地址:https://www.cnblogs.com/liulebao/p/3474727.html
Copyright © 2020-2023  润新知