关于项目配置、链接库冲突、main参数输入

1.  如何在编译器(vs2008)里设置调用别人写好的lib和dll

步骤:

(1) Tools->options->projects and solutions->VC++ directories分别在包含文件,库文件填加了路径

(这些路径只告诉编译器怎么找文件,没有说把那里面的文件加入工程.)

(若不设置,编译报错:无法打开***文件)
这步是对所有项目设置路径
而以下步骤却是对当前项目设置

(2) Project->properties->c/c++->general->additional include directories 添加包含文件

 Project->properties->linker->general->additional library directories 添加库文件

 Project->properties->linker->input->additional additional dependencies添加用到的lib

(这一步也可以在代码中显示调用 #pragma comment(lib, "***.lib") )

(若不添加,连接报错:无法解析的外部符号)

(3) 将dll文件拷贝到工程debug文件下(如果不拷贝,编译链接不报错,运行报错:无法找到***.dll)

参考:http://hi.baidu.com/liuyide/blog/item/807af0c4231566a68226aca7.html

2. 连接错误,库冲突(LIBCMT.lib和MSVCRT.lib)
      在同一个项目中,所有的源文件必须链接相同的C运行时库。如果某一文件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的库,也就是说用了不同的库,就会导致这个警告的出现。所以要删除导出的lib,冲突如下:

   版 本 类 型 使用的library 被忽略的library
 Release 单线程 libc.lib libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
多线程 libcmt.lib libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
使用DLL的多线程 msvcrt.lib libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
  Debug 单线程 libcd.lib libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
多线程 libcmtd.lib libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
使用DLL的多线程 msvcrtd.lib libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib


解决方法:
(1)  在CUDA编译选项里加入/MTd 或  /MT
(2) 
在“配置属性-->链接器-->输入-->忽略特定库”中把libcmt.lib添加进去或者在“配置属性-->链接器-->命令运”的“附加选项”添加上/NODEFAULTLIB:libcmt.lib
       但是,libcmtd 这个库有时候不能忽略,忽略后会有不能解析的外部符号错误。
       其实有个方便的方法 链接时加入参数 /FORCE:MULTIPLE。

3. main参数输入
(1) 项目配置方式:
在configuration Property-->Debugging-->command Arguments里面任意设置命令行参数。参数间以空格分开。
(2) 命令行方式:
输入.exe所在路径 参数1 参数2......

转载:http://blog.csdn.net/redline2005/article/details/6313703
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值