1. 对于一些重要代码 可以编译成dll或者lib, 然后提供给其他人使用和自己使用
1.1 lib 在VS2008中很简单, 就是创建一个Win32 DLL或者其他的DLL工程, 在
Property | Configuration Properties | General | Configuaration Type 中选择Static Library(.lib)
编译即可生成lib
对于使用者, 包含对应的头文件(函数, 类等声明),
在对应的地方输入类似下面的语句或者在对应的位置设置lib 就可以了.
#ifdef _DEBUG
#pragma comment(lib, "../Debug Static/ThreadPool.lib");
#else
#pragma comment(lib, "../Release Static/ThreadPool.lib");
#endif
得到lib后, 使用者连接lib时有时会报一堆连接错误, 这是lib的工程选项与使用者的工程选项不一致造成的
主要选项有:
a. Property | Configuration Properties | C/C++ | Code Generation | Rumtime Library 你可以根据情况选择对应的选项,
b. Property | Configuration Properties | General | Use of MFC 你可以根据需要选择对应的选项
由于生成lib时工程是Win32 Lib (本人比较喜欢这个), 所以默认选项就是 Use Standard Windows Libraries
但在Win32 Lib中也可以使用MFC的一些类的 例如CString, 那你就要选择Use MFC in a Shared DLL或者Use MFC in a Static DLL了
当你选择了这个的时候, a选项可能会有问题, b选项选择了MFC, a选项必须选MD了 (不能选MT).
1.2 对于dll
导出类:
// point.h文件
#pragma once
#ifdef DLL_FILE
class _declspec(dllexport) point //导出类point(DLL要导出类)
#else
class _declspec(dllimport) point //导入类point(使用者要导入类)
#endif
{
public:
float y;
float x;
point();
point(float x_coordinate,float y_coordinate );
};
// point.cpp文件
#define DLL_FILE
#include "point.h"
使用者只要包含对应的头文件和下面这些, 还有运行的时候需要对应的dll文件.
#ifdef _DEBUG
#pragma comment(lib, "../Debug Static/ThreadPool.lib");
#else
#pragma comment(lib, "../Release Static/ThreadPool.lib");
#endif