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函数啊??
时间比较短,大家帮帮忙吧……
...全文
96 点赞 收藏 12
写回复
12 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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你可以自己定义,只要对应类结构数据成员正确就行,然后把指针传进去,应该就行
回复
相关推荐
发帖
C++ 语言
创建于2007-09-28

6.0w+

社区成员

C++ 语言相关问题讨论,技术干货分享,前沿动态等
申请成为版主
帖子事件
创建了帖子
2009-05-19 03:37
社区公告
暂无公告