加急!!C++调用第三方dll的问题!!!

whc1q7 2013-01-14 10:10:23
现在要自己用C++写一个dll文件给C#写的程序调用,这个dll文件中要调用第三方的dll文件我在写C++dll文件是碰到了问题,调试时总是报错:
错误 1 error LNK2019: 无法解析的外部符号 "public: virtual __thiscall vhtTransform3D::~vhtTransform3D(void)" (??1vhtTransform3D@@UAE@XZ),该符号在函数 __catch$_add$0 中被引用
最开始写的代码是:
#if defined( _WIN32 )
#define _WIN32_WINNT 0x0400
#include <fstream>
#include <iostream>
using std::cout;
#else
#include <unistd.h>
#include <iostream.h>
#endif
#include <vhandtk/vhtBase.h>
#include<stdio.h>
#include<stdlib.h>
extern "C" __declspec(dllexport) int add()
{
vhtIOConn *gloveDict;
vhtCyberGlove *glove;
gloveDict = vhtIOConn::getDefault( vhtIOConn::glove );
glove = new vhtCyberGlove(gloveDict);
return 0;
}
这样报错;我注释掉两句后编译通过
extern "C" __declspec(dllexport) int add()
{
vhtIOConn *gloveDict;
vhtCyberGlove *glove;
//gloveDict = vhtIOConn::getDefault( vhtIOConn::glove );
//glove = new vhtCyberGlove(gloveDict);
return 0;
}
这样可以编译通过。求解原因解决办法?????
...全文
340 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
一叶之舟 2013-01-17
  • 打赏
  • 举报
回复
没有引用第三方库的lib文件,把lib文件,加到工程里就可以了.
cbzjzsb123 2013-01-17
  • 打赏
  • 举报
回复
dukong123 2013-01-17
  • 打赏
  • 举报
回复
路过,友情客串---------------
liru125504 2013-01-17
  • 打赏
  • 举报
回复
报错的原因就是因为你生命的是指针,指针没有对象可值,要进行new一下才能去掉类的函数。
赵4老师 2013-01-17
  • 打赏
  • 举报
回复
VC6: 工程、设置、C/C++、分类:Preprocessor、附加包含路径:填写附加头文件所在目录 逗号间隔多项 工程、设置、Link、分类:Input、附加库路径:填写附加依赖库所在目录 分号间隔多项 工程、设置、Link、分类:Input、对象/库模块:填写附加依赖库的名字.lib 空格间隔多项 VS20xx: 项目、属性、C/C++、附加包含目录:填写附加头文件所在目录 分号间隔多项 项目、属性、链接器、附加库目录:填写附加依赖库所在目录 分号间隔多项 项目、属性、链接器(点前面的+展开)、输入、附加依赖项:填写附加依赖库的名字.lib 空格间隔多项
Enter空格 2013-01-16
  • 打赏
  • 举报
回复
引用 3 楼 whc1q7 的回复:
所有的第三方dll和lib都被正确的添加了,但是编译还是通不过,错误是一样的。请一楼的实现虚构函数怎么弄的我C++刚学的还有很多东西不知道!求高人指点。
你目标DLL中没有实现virtual vhtTransform3D::~vhtTransform3D(void)函数。 就是vhtTransform3D::~vhtTransform3D(void)在你目标DLL中是个纯虚的东西。 你自己实现一下~vhtTransform3D就行。
crazy_samba 2013-01-16
  • 打赏
  • 举报
回复
vhtCyberGlove是不是vhtTransform3D的子类?若是的话需要实现它的析构函数
w5447242 2013-01-16
  • 打赏
  • 举报
回复
自学中,慢慢摸索.
whc1q7 2013-01-15
  • 打赏
  • 举报
回复
所有的第三方dll和lib都被正确的添加了,但是编译还是通不过,错误是一样的。请一楼的实现虚构函数怎么弄的我C++刚学的还有很多东西不知道!求高人指点。
china_jeffery 2013-01-14
  • 打赏
  • 举报
回复
添加vhtIOConn::getDefault函数所在DLL的lib引用
MrlinYihui 2013-01-14
  • 打赏
  • 举报
回复
没有实现虚构函数;vhtIOConn *gloveDict; vhtCyberGlove *glove; 只定义了指针,没有实现所以不会调用虚构函数!!new 以后会调用对象的构造函数,

64,646

社区成员

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

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