调用DLL例子中使用LoadLibrary方法//怎么还需要DLL的头文件???
[code=c]
void CTestDllDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
typedef CExportTest* (*lpCall)(CExportTest*);
typedef int (*fCall)(void);
//创建dll句柄
HINSTANCE hDll;
//装载dll
CExportTest* pInput = new CExportTest();
pInput->m_i = 2;
hDll = LoadLibrary(_T("DllInstenceMfc.dll"));
if(NULL==hDll)
{
AfxMessageBox(_T("DLL加载失败!"));
}
//检索指定DLL中的输出库函数地址
lpCall pFunc = NULL;
fCall pFI = NULL;
pFunc =(lpCall)GetProcAddress(hDll,(LPCSTR)"ExportClass");
pFI = (fCall)GetProcAddress(hDll,(LPCSTR)"TestFunc");
if(NULL==pFunc)
{
AfxMessageBox(_T("DLL内部函数调用失败!"));
}
if(NULL==pFI)
{
AfxMessageBox(_T("DLL内部函数TestFunc调用失败!"));
}
//创建DLL对话框
CExportTest* pDll = pFunc(pInput);
if(pDll != NULL)
{
int i = pDll->ExportInt();
CString str;
str.Format(_T("%d"),i);
AfxMessageBox(str);
}
if(pFI != NULL)
{
int x = pFI();
CString str;
str.Format(_T("%d"),x);
AfxMessageBox(str);
}
FreeLibrary(hDll);
delete pInput;
}
下面代码不使用编译不过啊
#pragma once
class CExportTest
{
public:
CExportTest(void);
virtual ~CExportTest(void);
public:
virtual int ExportInt();
//virtual int ExportStr(int x) = 0;
public:
int m_i;
};
#include "StdAfx.h"
#include "ExportTest.h"
CExportTest::CExportTest(void)
{
m_i = 1;
}
CExportTest::~CExportTest(void)
{
}
int CExportTest::ExportInt(void)
{
return m_i;
}
[/code]
...全文
相关推荐
C++编写dll和使用dll(最简单的例子vs2010)
用vs2010和C++语言编写的很简单的dll实例,内含dll源码,和如何使用dll的项目工程源码
qt调用cmd命令和dll例子
qt调用cmd命令和dll例子
c++和matlab调用DLL方法
介绍了如何用c++写DLL代码,用c++调用dll方法,同时也介绍了在matlab中如何调用外部DLL以及和C++的混合编程
DLL动态链接库生成和使用(隐式调用、显示调用)
Windows10 64位系统,VS2013 编程平台。两个工程,工程一为生成DLL的方法,生成dll、lib文件;工程二为调用DLL的方法,分为隐式调用和显式调用。两个工程都是控制台应用程序consoleapplication。 对应的文章为 https://blog.csdn.net/u012210613/article/details/88904841
Delphi 几种常见的Dll调用方法l
Delphi7 调用DLL几种常见的方法源码。


进程/线程/DLL
