sos!有关dll问题。
各位朋友你们好!请教一下有关dll动态链的问题。如何创建一个动态链呢?在.cpp文件中如何书写呢?介绍一下相关的书籍,小女子也不胜感激!
问题点数:20、回复次数:7Top
1 楼atree(七心海棠)回复于 2001-09-17 15:24:32 得分 5
hehe.
正好我前不久刚刚看了下VC技术内幕中的关于dll的部分。
哈哈,真的是非常的简单,
我觉得dll就是一个编程的思想而已。
提供了一些供别人使用的函数,
嗯。你用vc创建一个动态连接库,选择 a dll that exports some symbols.
看看那几个代码就知道了
一个小时就够明白了。
给我分啊。
我还没专家分呢
Top
2 楼jmylf(黄历上写着:驿马动,火逼金星,大利西方)回复于 2001-09-17 15:30:46 得分 2
很简单,只要指明呢要输出的函数和别名就可以了Top
3 楼fallleaf(没颜色的鱼)回复于 2001-09-17 16:09:13 得分 0
选择 a dll that exports some symbols是什么意思Top
4 楼use_id(use_id)回复于 2001-09-17 16:22:26 得分 8
以下是我抄的笔记不知道你看得懂么。
生成DLL文件(MFC)
一、生成DLL文件(RegDll.dll)
extern "C" _declspec(dllexport) double AreaTriangle(double a,double b,double c);
extern "C" _declspec(dllexport) int Display(int n);
#include "math.h"
extern "C" _declspec(dllexport) double AreaTriangle(double a,double b,double c)
{
double s,area;
s = 1.0/2*(a+b+c);
area = sqrt(s*(s-a)*(s-b)*(s-c));
return area;
}
extern "C" _declspec(dllexport) int Display(int n)
{
return n;
}
二、应用程序调用(显示链接)
HINSTANCE hdll;
......
hdll = LoadLibrary("RegDll.dll");
......
FreeLibrary(hdll);
.......
typedef double(*PROC1)(double,double,double);
PROC1 proc = (PROC1)GetProcAddress(hdll,"AreaTriangle");
double data = (*proc)(20.0,30.0,40.0);
CString str;
str.Format("AreaTriangle(20.0,30.0,40.0)=%f",data);
pDC->TextOut(20,20,str);
typedef int(*PROC2)(int);
PROC2 proc2 = (PROC2)GetProcAddress(hdll,"Display");
int n = 100;
(*proc2)(n);
str.Format("%d",(*proc2)(n));
MessageBox(str);
生成DLL文件(Win32 DLL)
一、生成DLL文件
文件Win32Dll.def
; Win32Dll.def : Declares the module parameters for the DLL.
LIBRARY "Win32Dll"
DESCRIPTION 'Win32Dll Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
Factor @1
文件Win32Dll.h
extern "C" long Factor(int n);
文件Win32Dll.c
extern "C" long Factor(int n)
{
int i;
long f = 1;
for(i=1;i<=n;i++)
f = f*i;
return f;
}
二、应用程序调用(隐式链接)
把生成的Win32Dll.h、Win32Dll.dll、Win32Dll.lib文件拷贝到应用程序工程中。
直接调用函式即可:
#include "Factor.h"
......
long data = Factor(10);
CString str;
str.Format("Factor(10) = %ld",data);
pDC->TextOut(20,20,str);
.......Top
5 楼use_id(use_id)回复于 2001-09-17 16:29:44 得分 2
上面“#include "Factor.h" 应改为“Win32Dll.h" 抄笔记时大意了。Top
6 楼aawolf(羌狼)回复于 2001-09-18 09:20:52 得分 3
我只知道在C++ BUILDER下怎么做DLL,看看创世纪的C++BUILDRE就知道了,你用VC可以看看《WINDOWS程序设计》,解释挺详细的,用SDK的,最最基本的。Top
7 楼fallleaf(没颜色的鱼)回复于 2002-01-31 14:53:18 得分 0
谢谢各位,由于忙。迟迟没有感谢!问题解决。Top




