C程序如何调用dll 文件

��写了一段C程序,需要调用到自己另外写的两个函数,我把这两个函数保存为两个dll文件,在程序里加上了相应的#include语句,但是编译时直接生成了一个exe文件,其他什么都没有了。我的想法是让main函数主干直接生成一个exe文件,然后两个外部函数分别放在两个dll文件里,等到我自己执行exe文件时才去调用这两个dll文件,请问这样如何做到?
��PS:不是C++,而是普通的C语言,该怎么做?
一楼能不能说详细一点,我对C语言不是很熟
那能说一下如何用VC++做dll呢,找了网上的东西发现看不懂

创建dll工程,工程名定为dll,新建并添加头文件dllDemo.h
//dlldemo.h
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif
EXPORT int add(int a,int b) ;
EXPORT int sub(int a,int b);
新建并添加源文件dllDemo.c
//dlldemo.c
#include <windows.h>
#include "dlldemo.h"
int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) {
return TRUE ;
}
EXPORT int add(int a,int b) {
return a+b;
}
EXPORT int sub(int a,int b){
return a-b;
}
编译成功后会生成一个dll文件。
再新建一个普通的win32 console工程,工程属性里面的字符集要设为多字节,不要使用Unicode。将dll文件放到目录下面。新建并添加main.c
#include <WINDOWS.H>
#include <WINBASE.H>
#include <stdio.h>
typedef int (*MYPROC)(int, int);
int main()
{
HINSTANCE LibHandle;
MYPROC ProcAdd,ProcSub;
char dllbuf[] = "dll.dll";//dll的路径
char sysbuf[] = "add"; /*过程名*/
char sysbuf1[] = "sub";
LibHandle = LoadLibrary(dllbuf); /*载入dll*/
ProcAdd = (MYPROC)GetProcAddress(LibHandle, sysbuf); /*获取函数sysbuf的地址*/
ProcSub = (MYPROC)GetProcAddress(LibHandle, sysbuf1);
printf("%d\n",(ProcAdd)(3,6));
printf("%d\n",(ProcSub)(3,6));
}
编译执行便可成功。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-06-03
用的IDE不一样,生成DLL文件的方法也有差异,建议上网查找你所用的IDE生成DLL文件的方法。

***********************************************

这个关键是IDE(比如是VC++还是BCB),C语言在编DLL和其它的程序时都用相同的规则。

***********************************************

看不懂建议暂时就不要自己做了,在这里说和你看网上资料是一样的,而且这里可以说的内容还不及网上多呢。本回答被提问者采纳