📄 基于visualc++6.0的ddl编程实现.htm
字号:
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>1</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)使用导出函数关键字</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>_declspec(dllexport)</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>创建</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.dll</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,该动态链接库中有两个函数,分别用来实现得到两个数的最大和最小数。在</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.h</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDLL.cpp</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件中分别输入如下原代码:</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
<br>
<br>
//MyDLL.h<br>
extern "C" _declspec(dllexport) int Max(int a, int b);<br>
extern "C" _declspec(dllexport) int Min(int a, int b);<br>
//MyDll.cpp<br>
#include<br>
#include"MyDll.h"<br>
int Max(int a, int b)<br>
{<br>
if(a>=b)return a;<br>
else<br>
return b;<br>
}<br>
int Min(int a, int b)<br>
{<br>
if(a>=b)return b;<br>
else<br>
return a;<br>
} <br>
<br>
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'> 该动态链接库编译成功后,打开</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>工程中的</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>debug</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>目录,可以看到</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.dll</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>、</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.lib</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>两个文件。</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>LIB</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件中包含</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件名和</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件中的函数名等,该</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>LIB</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件只是对应该</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件的</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>"</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>映像文件</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>"</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,与</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件中,</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>LIB</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件的长度要小的多,在进行隐式链接</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>时要用到它。读者可能已经注意到在</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.h</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>中有关键字</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>"extern C"</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,它可以使其他编程语言访问你编写的</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>中的函数。</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
<br>
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'> </span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>2</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>)用</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>.def</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件创建工程</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll<br>
<br>
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'> 为了用</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>.def</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件创建</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,请先删除上个例子创建的工程中的</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.h</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件,保留</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.cpp</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>并在该文件头删除</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>#include MyDll.h</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>语句,同时往该工程中加入一个文本文件,命名为</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.def</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,再在该文件中加入如下代码:</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'><br>
<br>
LIBRARY MyDll<br>
EXPORTS<br>
Max<br>
Min<br>
<br>
</span><span style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:
Tahoma;mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'> 其中</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>LIBRARY</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>语句说明该</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>def</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件是属于相应</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>的,</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>EXPORTS</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>语句下列出要导出的函数名称。我们可以在</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>.def</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件中的导出函数后加</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>@n</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,如</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Max@1</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Min@2</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>,表示要导出的函数顺序号,在进行显式连时可以用到它。该</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>DLL</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>编译成功后,打开工程中的</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>Debug</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>目录,同样也会看到</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.dll</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>和</span><span
lang=EN-US style='mso-bidi-font-size:10.5pt;font-family:Tahoma'>MyDll.lib</span><span
style='mso-bidi-font-size:10.5pt;font-family:宋体;mso-ascii-font-family:Tahoma;
mso-hansi-font-family:Tahoma;mso-bidi-font-family:Tahoma'>文件。</spa
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -