vs编译的一些技巧(持续更新中)

1.如果你将gnu的代码拿到vs命令行里面编译,经常会遇到很多错误,其中一些错误时因为gnu的很多代码是用c写的,而vs中c语法和gnu的c语法有很多差别,例如gnu里面的c中可以定义变量和调用函数初始化这个变量一块做;gnu里面会出现__inline__等。这时,你可以对cl.exe加上/TP参数就可以避免很多错误。更多cl的参数可以参考http://hi.baidu.com/liugang585570/blog/item/1ef2820e68a407206159f34c.html

2。当你在编译时出现WinSock2.h和WinSock.h冲突时,可以定义宏WIN32_LEAN_AND_MEAN来解决这个问题(参考http://www.codeguru.com/forum/archive/index.php/t-286587.html)。当你的工程中包含windows ddk的头文件时可能会出现这种情况。

c:/Program Files/Microsoft Visual Studio .NET/Vc7 /PlatformSDK/Include/WinSock2.h(153): error C2011: 'timeval' : 'struct' type redefinition

 

3。当出现很多系统函数,例如CreateWindow,在链接的时候找不到时,可以先检查一下有没有包含kernel32.lib和user32.lib,如果有包含,就需要检查一下有没有定义_MSC_VER这个宏,例如可以定义在cl.exe的参数里面加上/D”_MSC_VER=800”。

dxut.obj : error LNK2019: unresolved external symbol __imp__SystemParametersInfoW@16 referenced in function "long __stdcall DXUTInit(bool,bool)" (?DXUTInit@@YGJ_N0@Z)
dxutgui.obj : error LNK2001: unresolved external symbol __imp__SystemParametersInfoW@16
dxut.obj : error LNK2019: unresolved external symbol __imp__CommandLineToArgvW@8 referenced in function "void __cdecl DXUTParseCommandLine(void)" (?DXUTParseCommandLine@@YAXXZ)
dxut.obj : error

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值