dll是windows下的动态链接库文件,下面记录一下在windows下如何调用C语言开发的dll动态链接库。
1.dll动态链接库的源代码
hello_dll.c
#include <span>"</span><span>stdio.h</span><span>"</span><span>
_declspec(dllexport) </span><span>void</span> test_print(<span>char</span><span>const</span> *<span>str)
{
printf(</span><span>"</span><span>%s
</span><span>"</span><span>, str);
}
_declspec(dllexport) </span><span>int</span> test_add(<span>int</span> a, <span>int</span><span> b)
{
</span><span>return</span> a +<span> b;
}</span>
上面的代码定义了两个函数,第一个函数需要传入一个字符串,然后打印出这个字符串,第二个函数需要转入两个int型整数,然后返回这两个整数的和。
执行 cl -LD hello_dll.c 会生成hello_dll.dll文件
2.main函数的源代码
test_hello_dll.c
#include <stdlib.h><span>
#include </span><windows.h>
<span>int</span> main(<span>int</span> argc, <span>char</span><span>const</span> *<span>argv[])
{
</span><span>//</span><span> define two functional pointer</span><span>void</span>(*p_test_print)(<span>char</span><span>const</span> *) =<span> NULL;
</span><span>int</span>(*p_test_add)(<span>int</span>, <span>int</span>) =<span> NULL;
</span><span>int</span><span> add_result;
</span><span>//</span><span> load dll file, require window.h file</span>
HMODULE module = LoadLibraryA(<span>"</span><span>hello_dll.dll</span><span>"</span><span>);
</span><span>if</span> (module ==<span> NULL) {
system(</span><span>"</span><span>error load</span><span>"</span><span>);
}
p_test_print </span>= (<span>void</span>(*)(<span>char</span><span>const</span> *))GetProcAddress(module, <span>"</span><span>test_print</span><span>"</span><span>);
p_test_add </span>= (<span>int</span>(*)(<span>int</span>, <span>int</span>))GetProcAddress(module, <span>"</span><span>test_add</span><span>"</span><span>);
</span><span>if</span> (p_test_print !=<span> NULL) {
p_test_print(</span><span>"</span><span>Hello This is from dll</span><span>"</span><span>);
} </span><span>else</span><span> {
system(</span><span>"</span><span>function p_test_print can not excute</span><span>"</span><span>);
}
</span><span>if</span> (p_test_add !=<span> NULL) {
add_result </span>= p_test_add(<span>5</span>, <span>5</span><span>);
printf(</span><span>"</span><span>Add result is %d
</span><span>"</span><span>, add_result);
} </span><span>else</span><span> {
system(</span><span>"</span><span>function p_test_print can not excute</span><span>"</span><span>);
}
FreeLibrary(module);
system(</span><span>"</span><span>pause</span><span>"</span><span>);
</span><span>return</span><span>0</span><span>;
}</span>
执行 cl test_hello_dll.c 会生成test_hello_dll.exe的可执行文件。
运行该文件,可以成功调用dll文件中定义的函数。
原文:http://www.cnblogs.com/shizqiang/p/5523824.html
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!