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

来源:互联网 发布:阿里云扩容数据盘 编辑:程序博客网 时间:2024/06/07 01:47
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.liblibcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib多线程libcmt.liblibc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib使用DLL的多线程msvcrt.liblibc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib  Debug单线程libcd.liblibc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib多线程libcmtd.liblibc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib使用DLL的多线程msvcrtd.liblibc.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
0 0