[非常的急]如何将构造函数放入def文件中?

wsxqaz 2009-10-13 10:43:24
因为这个class我要new出来所以要将构造函数设置为导出的,但是如果我整个类用__declspec(dllexport)方法导出,所有的导出的名字都是前面加了?后面加了@的名字已经加了extern "C"了但是用dumpbin看出来的方法名字还是这样,只有将导出函数放入def文件编译出来的东西名字才没有加那些东西。现在的问题,如果我将构造函数名字放入def文件它就报无法解析名字错误(就是那个def文件里放构造函数名字的地方)不知道该如何处理?如果不加构造函数进去,在用的地方new class1()编译时它就会报没有找到连接器(也就是那个构造函数)错误,有没有办法解决?谢谢
...全文
88 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 wsxqaz 的回复:]
引用 7 楼 conry 的回复:
既然是类,肯定用C++了,extern “C”用来做什么?
难道你能用c代码来调用C++类的构造函数



不加这个字你看看名字是一长穿内容!!!而不是你原来的名字了!然后你的dll通过你头文件里的名字是调用不到这些方法的!!!
[/Quote]
用的就是这一长串的名字
wsxqaz 2009-11-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 conry 的回复:]
既然是类,肯定用C++了,extern “C”用来做什么?
难道你能用c代码来调用C++类的构造函数

[/Quote]

不加这个字你看看名字是一长穿内容!!!而不是你原来的名字了!然后你的dll通过你头文件里的名字是调用不到这些方法的!!!
A1erX 2009-10-13
  • 打赏
  • 举报
回复
如果是自己编写的DLL,就要用原来的头文件,如果是别人写的DLL,VC下有一个工具UNDNAME.EXE可以导出来。
wsxqaz 2009-10-13
  • 打赏
  • 举报
回复
那我该如何new呢?用那个带?和@的方法名来new?那我给使用这个dll的地方的头文件该如何定义?用原来的文件名,还是将使用的头文件改为dumpbin中显示的那个名字?
ssylll 2009-10-13
  • 打赏
  • 举报
回复
认同
  • 打赏
  • 举报
回复
还是导出类吧

链接器认不得改名后的构造函数。
Conry 2009-10-13
  • 打赏
  • 举报
回复
既然是类,肯定用C++了,extern “C”用来做什么?
难道你能用c代码来调用C++类的构造函数
wsxqaz 2009-10-13
  • 打赏
  • 举报
回复
我找到原因了如果,我在dll向导的地方钩上自动化,他会创建idl文件和cpp文件中加上注册方法,这样就可以运行了,我想问一下那是不是代表着所有的dll都必须通过regsvr32来注册才能使用?
MoXiaoRab 2009-10-13
  • 打赏
  • 举报
回复
我觉得应该导出类比较和谐

16,551

社区成员

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

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

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