vs2008中,有些项目上的功能是要生产库文件给其他项目调用的,以下是一些设置库文件(x.dll和x.lib)输出路径的方法.
设置x.dll 输出路径方法是在右键项目的"属性"->连接器->常规, 然后在常规属性界面中的 "输出文件" 中填入自己想要x.dll文件的输出路径.
设置x.lib 输出路径方法是在右键项目的"属性"->连接器->高级, 然后在高级属性界面中的 "导入库" 项中填入自己想要x.dll文件的输出路径.
但是在设置x.lib的输出路径时,发现如果你输入的路径中有某个文件夹不存在,那么文件会生成失败,并且提示无法链接到导入库项路径中的lib库.
解决这个问题的方法是保证你设置的路径上每个文件夹都是存在的。如果不存在,就手动创建。
经过测试发现设置x.dll的路径时,如果输入的路径中即使有某个文件夹不存在,编译器会自动给我们生成,并不会出现x.lib设置的情况。
这边给一个简单的例子:
#ifndef _JN_COLLECT_DATA_MODBUSTCP_INTERFACE_H_ #define _JN_COLLECT_DATA_MODBUSTCP_INTERFACE_H_ //--------------------------------------------------------- #include "JnCollectDataBase.h" //--------------------------------------------------------- #ifdef JNCOLLECTDATA_MODBUSTCP_EXPORTS #define JN_MODBUSTCP_API __declspec(dllexport) #else #define JN_MODBUSTCP_API __declspec(dllimport) #endif #define JN_MODBUSTCP_CALL __stdcall //--------------------------------------------------------- /** * 取得采集兼容实例 * @return =CCollectDataBase& 采集兼容实例引用 */ JN_MODBUSTCP_API CCollectDataBase& JN_MODBUSTCP_CALL JNCSI_GetInstance_ModbusTcp(); //--------------------------------------------------------- #endif /* _JN_COLLECT_DATA_MODBUSTCP_INTERFACE_H_ */ #include "JnCollectData_ModbusTcpInterface.h" #include "JnCollectData_ModbusTcp.h" JN_MODBUSTCP_API CCollectDataBase& JN_MODBUSTCP_CALL JNCSI_GetInstance_ModbusTcp() { return CCollectData_ModbusTcp::GetInstance(); } #ifdef __cplusplus extern "C" { #endif //SDKs #ifdef __cplusplus } /* extern "C" */ #endif隐式链接采用静态加载的方式,比较简单,需要.h、.lib、.dll三件套。。新建“控制台应用程序”或“空项目”配置如下:(非常关键) 项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件.h所在的目录 项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件.lib所在的目录
项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“.lib”(若有多个 lib 则以空格隔开)还需要将.dll复制到当前项目生成的可执行文件所在的目录。
代码加载库
#pragma comment(lib,"ws2_32.lib")