win32控制台程序调用DLL文件
- 创建win32的空项目文件:
2.CPP文件中添加的头文件:
#include "pch.h" #include "framework.h" #include <Windows.h> #include <iostream> //#include "SerialPort_Com.h" #pragma comment(lib,"E:\\COM_DELL\\COM\\Debug\\SerialPort_Com.lib") #include "afxdialogex.h"
3.准备已经完成,接下来我们就开始正式的 搞事情了:
文件目录文件中:
其余文件都是编译器自动生成动态链接库所需文件,更具要求不同,稍后再使用中 添加对应的文件即可:
int main()
{
HMODULE hmodule = LoadLibrary(L"SerialPort_Com.dll");
if (NULL == hmodule)
{
MessageBox(0, L"加载 MyDLL.dll 失败", L"提示信息", 4);
}
else
{
2.获取导出函数指针
typedef Port_Dlg * (*hpDllFun)();
hpDllFun pShowDlg = (hpDllFun)GetProcAddress(hmodule, "SHOW_W");//获取函数地
if (NULL == pShowDlg)
{
//MessageBox(_T("DLL中函数寻找失败"));
MessageBox(0, L"DLL中函数寻找失败", L"提示信息", 4);
return 0;
}
else
{
pShowDlg();
}
//FreeLibrary(hmodule);
//pShowDlg();
}
system("pause");
std::cout << "Hello World!\n";
}
接下来 神奇的一幕就出现了:
我将吧dLL库文件的一段 实现弹出桌面的 代码 贴出来 方便大家去观看:
DWORD WINAPI ThreadCallBack(LPARAM lparam)
{
MessageBox(0, L"123", L"提示信息", 4);
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (my)
my = new Port_Dlg();
my->DoModal();//创建模态窗口 然后堵塞 等待窗口关闭后继续往下执行
//FreeLibraryAndExitThread(theApp.m_hInstance, 1);//释放 会触发ExitInstance();
return 1;
}
宝子门是不是很清晰哈!
到这里就结束了,祝宝子们再接再厉,再上一层楼!