VC调用第三方DLL,接口参数中有一个类,怎么办啊??大家帮帮忙,急啊!!!

huangzy01 2009-05-19 03:37:21
我是新手,请大家说的详细点~~~我也就这么点分了,大家帮帮忙吧!!!
现在只有DLL文件,没有.h和.lib文件,但是有个简单的接口说明文件。
DLL用LoadLibrary进来了,但是调用其中的函数CAT_ClassifyTrain时,里面参数有一个是自定义的类,不知道该怎么办了……

函数是:int CAT_ClassifyTrain(CATInfo*pCATInfo , int layer);
[参数]
pCATInfo->srcFolder 存放训练文件的目录
pCATInfo->dstFolder 存放训练后生成的分类模板的目录
Layer 分类器的层次
[返回值]
如果成功执行,返回0,否则返回负值。

调用其他的参数中没有自定义类的函数时,如int CAT_CheckModels(char*path),则能够正确调用。

请问我该怎么样调用CAT_ClassifyTrain函数啊??
时间比较短,大家帮帮忙吧……
...全文
129 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangzy01 2009-05-21
  • 打赏
  • 举报
回复
感谢goodname的大力帮助,谢谢!!!

好不容易找到头文件了~~~
hjjdebug 2009-05-20
  • 打赏
  • 举报
回复
你需要知道 CATInfo 的结构定义。 方法有2
1. 通过.h, .cpp 文件search. 如果对方有给,就好办了。
2. 就比较累了! 反汇编。
SoRoMan 2009-05-20
  • 打赏
  • 举报
回复
如果你都知道CATInfo成员了,不就相当于你有了CATInfo的声明了么?
如果你不知道CATInfo成员,那就无能为力了。

还是搞到dll对应的声明文件吧。
huangzy01 2009-05-19
  • 打赏
  • 举报
回复
去掉那一行后,调试出现错误
Unhandled Exception ...Access Violation
goodname 2009-05-19
  • 打赏
  • 举报
回复
info1.srcFolder=(char *)malloc((int)strlen(fName)+1);
这一行就不要了。
==================================
如果你是采用的
class CATInfo
{
public:
char *srcFolder;
char *dstFolder;
protected:
private:
};
这种方案,这说明你的用法是正确的。

huangzy01 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 goodname 的回复:]
//定义CATInfo类
class CATInfo
{
public:
char srcFolder[256];
char dstFolder[256];
protected:
private:
};

说不定应该是这样
[/Quote]

照着您的改了,编译出错……
我下面有这样的代码:

char fName[256],fName1[256];
strcpy(fName,"F:\\Project\\语料分类\\catdemo2\\train\\");
info1.srcFolder=(char *)malloc((int)strlen(fName)+1);
strcpy(info1.srcFolder,fName);

错误:error C2440: '=' : cannot convert from 'char *' to 'char [256]'
There are no conversions to array types, although there are conversions to references or pointers to arrays

请问该怎么改?我不会……,刚学没多久
goodname 2009-05-19
  • 打赏
  • 举报
回复
//定义CATInfo类
class CATInfo
{
public:
char srcFolder[256];
char dstFolder[256];
protected:
private:
};

说不定应该是这样
huangzy01 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lori227 的回复:]
至少需要有 CATInfo 的声明吧!!
[/Quote]
你说的是.h中的声明还是.cpp中的声明??
在.cpp中声明了,但是并不知道这个类的数据成员呀……
我在.cpp中这样声明了,不知道对不对
//定义CATInfo类
class CATInfo
{
public:
char *srcFolder;
char *dstFolder;
protected:
private:
};
调用:CATInfo info1;
i=CAT_ClassifyTrain(&info1,layer);
这样调用应该是对的吧??

编译能通过,但是返回的i是负值,说明函数执行失败,所以我推测应该是类声明的问题
huangzy01 2009-05-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 smile190 的回复:]
CATInfo你可以自己定义,只要对应类结构数据成员正确就行,然后把指针传进去,应该就行
[/Quote]
可是,给出的接口文件里面并没有提到CATInfo的数据成员有哪些呀?
这种情况该怎么办??
xxf012005 2009-05-19
  • 打赏
  • 举报
回复
传参数的时候出现问题
lori227 2009-05-19
  • 打赏
  • 举报
回复
至少需要有 CATInfo 的声明吧!!
smile190 2009-05-19
  • 打赏
  • 举报
回复
CATInfo你可以自己定义,只要对应类结构数据成员正确就行,然后把指针传进去,应该就行

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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