========================================
静态库的使用方式1
先新建一个静态库工程
然后添加我们自己的cpp和.h文件
惯例,在 .h里面添加声明,在.cpp里添加定义
然后添加一个exe程序,然后在exe里添加上面的头文件
在exe.cpp里添加如下代码
静态库的使用方式2
右键,项目,链接器,常规,附加库目录里添加我们的库目录路径
然后在输入里面添加我们的lib文件名
动态链接库
新建一个dll工程
在dll.h里添加如下代码
extern那里需要添加一个"C" 这样动态载入dll的时候就不需要用dll符号
查看器来查看符号了,而是直接用变量名和函数名即可
在dll.cpp添加定义代码
新建一个exe程序,用来测试dll
动态载入dll是不需要dll.h头文件的
MFCDLL
添加一个MFCDLL工程,在头文件里添加
创建一个对话框,这个对话框关联一个类,叫CMyWindow
然后在cpp里添加如下代码
创建一个MFCexe程序,添加一个按钮进行测试
添加如下代码
void CtestDllDlg::OnBnClickedButton1()
{
//动态加载dll
HMODULE hmodule = LoadLibrary(_T("D:\\pragram\\链接库\\mydll\\MFCLibrary1.dll"));
if (hmodule)
{
TRACE("sucessful");
//导入变量,如果在写dll的时候extern后面没有加"C" 那么这第二个参数就需要用工具来查看了
int* my_a = (int*)GetProcAddress(hmodule, "aaa"); //第二个参数是符号,也就是变量名
TRACE("%d\n",*my_a);
//导入函数
typedef int myadd(int, int);
myadd* my_add = (myadd*)GetProcAddress(hmodule, "addTwo");
TRACE("%d\n", my_add(10, 20));
typedef void myshow(void);
myshow* p = (myshow*)GetProcAddress(hmodule, "showmywindow");
p();
}
}
这样可以实现在exe里调用的窗口
其实如果是在MFC DLL里,
根本就不需要加那些 extern "C" _declspec(dllexport)
直接在
def文件里写上函数名即可