1)案例 如何显示的调用动态链接库
(1) 建立项目test100
(2) 写头文件source.h 和源文件 source.cpp
source.h
#pragma once
#ifdef Test_EXPORTS
#define MIPETAIAlgorithm_API __declspec(dllexport)
#else
#define MIPETAlAlgorithm_API __declspec(dllimport)
#endif
#include <iostream>
#include <string>
extern "C"
{
MIPETAIAlgorithm_API int HyperDLRAlgorithm();
MIPETAIAlgorithm_API int Location_xy_fromImg();
}
source.cpp
#include "source.h"
int HyperDLRAlgorithm()
{
return 1314;
}
int Location_xy_fromImg()
{
return 0;
}
设置项目test100 属性
(3) 写另外一个项目用来调用test100的函数
建立test101 project
#include <Windows.h>
using namespace std;
int main()
{
typedef int(*Local)();
HINSTANCE hDLL;
Local FuncSourcePosition;//函数指针
//hDLL =LoadLibraryA("D:/UIH/bin/MIPETSouceDetectAlgorthm.dll");//加载动态链接库DLLTest.dll文件;
hDLL = LoadLibraryA("D:/UIH/bin/test100.dll");
FuncSourcePosition = (Local)GetProcAddress(hDLL, "HyperDLRAlgorithm");
int result = FuncSourcePosition(); //返回结果是1314
FreeLibrary(hDLL);//卸载.dll文件;
int ret = 0;
return ret;
}
总结:
1) 被调用的和调用的项目要都处于Release X64 或其他,但保持一致
2) 被调用的dll 要有extern “C”