一、建立一个NoMFC动态库:
//noMFCtest.h
#ifndef LIB_H
#define LIB_H
extern "C" int _declspec(dllexport) add(int a,int b);//必须有extern "C"
#endif
//noMFCtest.cpp
#include "noMFCdlltest.h"
int add(int a,int b)
{
return a + b;
}
二、调用动态库控制台程序
1、动态加载调用库
// noMFCdllcall.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <windows.h>//包含加载动态库、加载库函数程序头文件
#include <iostream>
typedef int(*lpAddFun)(int,int);//回调函数指针
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
HINSTANCE hDll;
lpAddFun addFun;
hDll = LoadLibrary(_T(".//noMFCdlltest.dll"));//加载动态库,注意必须有_T宏,转化为const wchar
if (hDll != NULL)
{
addFun = (lpAddFun)GetProcAddress(hDll,("add"));
if (addFun != NULL)
{
cout<<"1+2="<<addFun(1,2);
int i;
cin>>i;
}
}
return 0;
}
2、静态链接lib调用
#include "stdafx.h"
#include <windows.h>//包含加载动态库、加载库函数程序头文件
#include <iostream>
#include "..//noMFCdlltest//noMFCdlltest.h"
#pragma comment(lib,"noMFCdlltest.lib")
extern "C" _declspec(dllimport) int add(int a,int b);
using namespace std;
void test3();
int _tmain(int argc, _TCHAR* argv[])
{
test3();
return 0;
}
void test3()
{
cout<<"1+2="<<add(1,2);
}