常用的设置备忘

xiaoxiao2021-02-28  63

1.设置程序管理员启动方式启动

2.设置.dll与.lib生成目录

        vs2008中,有些项目上的功能是要生产库文件给其他项目调用的,以下是一些设置库文件(x.dll和x.lib)输出路径的方法.

设置x.dll 输出路径方法是在右键项目的"属性"->连接器->常规, 然后在常规属性界面中的 "输出文件" 中填入自己想要x.dll文件的输出路径. 

        设置x.lib 输出路径方法是在右键项目的"属性"->连接器->高级, 然后在高级属性界面中的 "导入库" 项中填入自己想要x.dll文件的输出路径.

        但是在设置x.lib的输出路径时,发现如果你输入的路径中有某个文件夹不存在,那么文件会生成失败,并且提示无法链接到导入库项路径中的lib库.

        解决这个问题的方法是保证你设置的路径上每个文件夹都是存在的。如果不存在,就手动创建。

        经过测试发现设置x.dll的路径时,如果输入的路径中即使有某个文件夹不存在,编译器会自动给我们生成,并不会出现x.lib设置的情况。

3.编写dll程序的头文件预定义

这边给一个简单的例子:

#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
4.隐式调用.dll的API

隐式链接采用静态加载的方式,比较简单,需要.h、.lib、.dll三件套。。新建“控制台应用程序”或“空项目”配置如下:(非常关键)    项目->属性->配置属性->VC++ 目录-> 在“包含目录”里添加头文件.h所在的目录    项目->属性->配置属性->VC++ 目录-> 在“库目录”里添加头文件.lib所在的目录

    项目->属性->配置属性->链接器->输入-> 在“附加依赖项”里添加“.lib”(若有多个 lib 则以空格隔开)还需要将.dll复制到当前项目生成的可执行文件所在的目录。

代码加载库 

#pragma comment(lib,"ws2_32.lib")
5.字符对齐
#pragma pack(1)

转载请注明原文地址: https://www.6miu.com/read-2632039.html

最新回复(0)