vc++可以调用c写的dll吗?

zyylily 2003-08-22 02:52:55
我有一个dll及相关的.lib,.h文件想在c++下调用,可以实现吗?
如果可以,该怎么调用?
光是把lib和h文件加入工程后在cpp中include这个头文件的方法好像不行,
编译时系统还是不能识别这个dll中的函数
...全文
21 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangmin314 2003-08-23
  • 打赏
  • 举报
回复
隐式调用,在project,setting 下设置link中的object library module 中填入.lib文件的路径。将.dll文件拷贝到执行文件目录中,申明extern "c" declspec(dllimport) 函数名。
显式调用:如要调用dll中的int Start()函数,则
typedef BOOL (Start)();
HINSTANCE hIN;
Start* start;
hIN=::LoadLibrary("HookSocket.dll");
start=(Start*)::GetProcAddress(hIN,"StartHook");
(*start)();
李_军 2003-08-22
  • 打赏
  • 举报
回复
在vc中的菜单project-setting下面的link页面的object library module中填Debug/csdll.lib你的lib名称,然后 .h中要对函数声明加上extern "C",
神农氏 2003-08-22
  • 打赏
  • 举报
回复
关键是.h中要对函数声明加上extern "C",其他的不用管
hydcumt 2003-08-22
  • 打赏
  • 举报
回复
应该用#pragma comment(lib,"XXX.lib")调用LIB!
zyylily 2003-08-22
  • 打赏
  • 举报
回复
to oo() 在cpp中加了extern "C" { #include "mb_c.h"}还是不行??另外.def不知道怎么写??

下面是mb_c.h文件的部分内容,为什么我在cpp中#include "mb_c.h"之后,无论是其中定义的
对象还是函数,musicbrainz_t,mb_Delete.... 系统统统不能识别???
#include "errors.h"
#include "queries.h"
#include "bitprintinfo.h"

#ifdef __cplusplus
extern "C"
{
#endif

/**
* Basic C abstraction for the MusicBrainz Object
*/
typedef void * musicbrainz_t;
/**
* Basic C abstraction for the TRM Object
*/
typedef void * trm_t;
void mb_Delete (musicbrainz_t o);
...........
oo 2003-08-22
  • 打赏
  • 举报
回复
写个.def文件,把dll的函数名加到这个文件里。

或者这样extern "C" { #include "xxx.h"}
bluestar 2003-08-22
  • 打赏
  • 举报
回复
用LoadLibrary

15,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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