2个回答
展开全部
假设名凯陵为a.dll导出了函数int sum(int a, int b);
应这样调用:
HMODULE hLib = LoadLibrary("a.dll"); /盯隐戚/加载a.dll,这里是假设a.dll与程序放在同携谈一目录
typedef int (*funcSum)(int,int); // 定义函数指针
funcSum sum = (funcSum) GetProcAddress(hLib, "sum"); //获取函数地址
int ret = sum(1,2); //调用
FreeLibrary(hLib); //释放
应这样调用:
HMODULE hLib = LoadLibrary("a.dll"); /盯隐戚/加载a.dll,这里是假设a.dll与程序放在同携谈一目录
typedef int (*funcSum)(int,int); // 定义函数指针
funcSum sum = (funcSum) GetProcAddress(hLib, "sum"); //获取函数地址
int ret = sum(1,2); //调用
FreeLibrary(hLib); //释放
展开全部
DLL函州脊腊数导出方式有多册滑野唯种方式,这里介绍的是其中一种方式
头文件gptsqlite.h:
#ifndef _GPTSQLITE_H__
#define _GPTSQLITE_H__
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
CLASS_DECLSPEC int Add(int i, int j);
#undef _DLL_GPTSQLITE
#ifdef __cplusplus
}
#endif
#endif
源文件gptsqlite.cpp
#include "StdAfx.h"
#define _EXPORTING
#include "gptsqlite.h"
CLASS_DECLSPEC int Add(int i, int j)
{
return i+j;
}
调用函数
#include "stdafx.h"
#include<cstdlib>
#include <iostream>
#include "gptsqlite.h"
#pragma comment(lib, "dlldatabase.lib")
int _tmain(int argc, _TCHAR* argv[])
{
int i = Add(1, 2);
std::cout << i << std::endl;
system ("pause");
return 0;
}
头文件gptsqlite.h:
#ifndef _GPTSQLITE_H__
#define _GPTSQLITE_H__
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _EXPORTING
#define CLASS_DECLSPEC __declspec(dllexport)
#else
#define CLASS_DECLSPEC __declspec(dllimport)
#endif
CLASS_DECLSPEC int Add(int i, int j);
#undef _DLL_GPTSQLITE
#ifdef __cplusplus
}
#endif
#endif
源文件gptsqlite.cpp
#include "StdAfx.h"
#define _EXPORTING
#include "gptsqlite.h"
CLASS_DECLSPEC int Add(int i, int j)
{
return i+j;
}
调用函数
#include "stdafx.h"
#include<cstdlib>
#include <iostream>
#include "gptsqlite.h"
#pragma comment(lib, "dlldatabase.lib")
int _tmain(int argc, _TCHAR* argv[])
{
int i = Add(1, 2);
std::cout << i << std::endl;
system ("pause");
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询