_025_静态库_动态库

========================================


静态库的使用方式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文件里写上函数名即可









猜你喜欢

转载自blog.csdn.net/yzj17025693/article/details/80906607