常用的设置备忘

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)


猜你喜欢

转载自blog.csdn.net/lasuerte/article/details/80363144