1.用C的编程方式生成.dll文件
1-1:MyDLL.h
#pragma once
#include <iostream>
#define DLL_EXPORT
#if defined DLL_EXPORT
#define DLL_API __declspec(dllexport)
#else
#define DLL_API __declspec(dllimport)
#endif
extern "C" DLL_API double Add(double a, double b);
extern "C" DLL_API double Subtract(double a, double b);
extern "C" DLL_API double Multiply(double a, double b);
extern "C" DLL_API double Divide(double a, double b); 1-2:MyDLL.cpp
#include "MyDLL.h"
double Add(double a, double b)
{
return a + b;
}
double Subtract(double a, double b)
{
return a - b;
}
double Multiply(double a, double b)
{
return a * b;
}
double Divide(double a, double b)
{
if (b == 0)
{
printf("b cannot be zero!");
}
return a / b;
}2.测试生成的dll文件(动态调用和静态调用)
2-1:动态调用(此中调用方式只需把.dll文件拷贝到工程目录即可)
#include "stdio.h"
#include <stdlib.h>
#include "windows.h"
#include <iostream>
using namespace std;
int main(int argc, char * argv[])
{
typedef double(*FunctionAdd)(double,double); //函数指针
FunctionAdd pAdd = NULL;
HINSTANCE hDll = LoadLibraryA("MyDLL.dll"); ;
if(NULL != hDll)
{
pAdd =(FunctionAdd)GetProcAddress(hDll, "Add");
if(pAdd != 0)
{
cout<<"Add(10.0,6.0) = "<<pAdd(10.0,6.0)<<endl;
system("pause");
}
}
FreeLibrary(hDll);
return 0;
}2-2:静态调用(此中方式需要把.dll文件、.lib文件、.h文件全部拷贝到工程目录文件夹下)
#include "MyDLL.h"
#pragma comment (lib,"MyDLL.lib")
int main(int argc, char * argv[])
{
double ret = Add(10.0,6.0);
printf("%lf\n",ret);
system("pause");
return 0;
}
本文介绍如何使用C语言编写DLL文件,并提供动态和静态两种调用方式的示例代码。首先展示了DLL文件中定义的数学运算函数,接着通过具体实例演示了如何在应用程序中加载并使用这些函数。
1万+

被折叠的 条评论
为什么被折叠?



