使用 devc++ 移植 VC6代码解决方案 以及 用devc++开发部分游戏时已验证的 linker 链接库的链接命令集合

VC6 的代码 C/C++ socket 套接字(Windows)怎么用 - CodeBus

结论:

0. 只要有源代码.cpp .h .c 文件就能移植

1. 凡是 void main 的,都要改成 int main

2. 凡是 void main 的,里面 return; 要改成 return 0; 因为 int main 的返回值是 int

3. 凡是 #pragma comment(lib, "ws2_32.lib")的,要在编译选项里,填写 -lwsock32,具体填写位置详情 使用 Dev-C++实现简单的客户端和服务器_devc++服务器-CSDN 博客

原因:#pragma comment(lib, "ws2_32.lib")在 VC 里 VS 里是预编译选项,选择链接库(link library,就是 .lib 文件),而 devc++ 这类使用 GCC 的编译器,需要指定链接命令。

-lwsock32 实际上就是 link winsocket32, 也就是说,程序里有 #pragma comment(lib, "xxxx") 的,一般需要添加相应命令 -lxxxx 来移植进 devc++,至于还这#代码也不用动,反正不影响程序,就尽量保持原样。

4.对于 VS 的默认编译选项:只编译该模块一次:#progra once 有时需要删除 使用 devc++ 移植高精度命令行窗口光线追踪代码 用 5 秒一帧的画面更新,理解 3D 游戏使用 GPU 加速的必要性 - CodeBus

devc++ 开发 easyx 的链接命令集合

具体填写位置同结论 3,或者项目属性(Project Option)里面的 parameter 的 linker 一列。

-leasyx 链接 easyx 图形库 实现图形界面(这个是默认的,不用管。除非不想新建工程,一个 cpp 直接跑代码,连项目管理器都不用)

-lwsock32 链接 windows socket 套接字 实现局域网联机游戏 使用 devc++ 建立局域网联机程序并传输字符串 - CodeBus

-lwinmm 链接 windows multimedia 实现 精确延时的实现 - CodeBus

-static 静态编译,有的 devc++ 编译完需要 和所需的 dll 文件在同一个文件目录下,否则单独点击 exe 文件报错 dll 缺失问题,可以选择使用静态编译命令 -static 来实现 exe 内部打包 dll 代码。DevC++ 多线程创建与删除与 exe 文件脱离 DevC++运行中发现 dll 文件和 exe 文件的关系-CSDN 博客

-std=c++11 使用 c++11 版本进行编译。不加这个有的时候用 easyx 会警告,但是无视警告直接编译也没啥问题。

添加评论