如何使用DLL中的导出函数?

deskzhc 2000-12-14 09:16:00
在一个DLL中定义的:
extern "C" int PASCAL EXPORT myfun();
如何在应用程序中调用,要包含.dll文件吗(不用.lib文件)?
...全文
408 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
michoal 2000-12-14
  • 打赏
  • 举报
回复
请问一下应该如何注册dll呢,我在vc里编的dll到别的程序里运行都说注册不成功,比如说vb应该如何调用呢,非常感谢
NiceFeather 2000-12-14
  • 打赏
  • 举报
回复
dearmit,是你!你那主页论坛做得如何?我去看看!网址?我忘了
dearmit_cn 2000-12-14
  • 打赏
  • 举报
回复
对了,VC的DLL一定要用DEF来弄一下,

又省事,又方便,呵呵,NIcefeather好久不见,真想你,呵呵,
NiceFeather 2000-12-14
  • 打赏
  • 举报
回复
你何必要用这种老方法呢?为什么不引入一个.DEF文件来输出你的函数呢?
A module-definition (.DEF) file is a text file that contains statements for defining an .EXE file or DLL
.DEF文件如何导出函数,你应该清楚,我就不多说了。
如果你一定要用extern "C"输出函数,请查MSDN里的“extern "C"”章节!
dearmit_cn 2000-12-14
  • 打赏
  • 举报
回复
你的EXE和DLL是都用VC写的,????????????
如DLL和EXE都用VC写,呵呵,什么都不用加,

如果不是,DLL用VC写,

请用,STDAPI这个关键字,不用extern "c" int 什么也不用,就这一个,
STDAPI myfunc()
{
return ……;
}
如果是BCB写的
用extern "C" __declspec(dllexport) int __stdcall myfunc()
{
}
如再不好用,请重新装你的VC或BCB吧,
deskzhc 2000-12-14
  • 打赏
  • 举报
回复
NiceFeather的方法我试过,在一般情况下可以,但加上extern "C" int PASCAL EXPORT
时编译会抱错,是不是要加修饰字?
NiceFeather 2000-12-14
  • 打赏
  • 举报
回复
呵呵……好险啦!总算抢了个先手!嘿嘿……

(NiceFeather狞笑着对vcbear说)
vcbear 2000-12-14
  • 打赏
  • 举报
回复
静态:
#include "yourdll.h"
#pragma comment (lib,"yourdll.lib")
lib,和dll放在你调用程序的目录下或系统目录或显式指出目录。
然后可以象调用全局函数一样调用了。

动态:
比较麻烦一些。
用函数
LoadLibary 载入动态库
GetProcAddress 获得函数地址
用得到的地址调用。

NiceFeather 2000-12-14
  • 打赏
  • 举报
回复
看一下下面一小段,并且琢磨一下:

typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);
.
.
.
HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer
DWORD dwParam1;
UINT uParam2, uReturnVal;

hDLL = LoadLibrary("MyDLL");
if (hDLL != NULL)
{
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
"DLLFunc1");
if (!lpfnDllFunc1)
{
// handle the error
FreeLibrary(hDLL);
return SOME_ERROR_CODE;
}
else
{
// call the function
uReturnVal = lpfnDllFunc1(dwParam1, uParam2);
}
}

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧