-ARX->ObjectARX支持C++14的淫技
本帖最后由 东升铮 于 2022-12-20 13:02 编辑前言:
作为一个从auto lisp转到Objectarx二开的新鸟,就像来到了一个新天地,这里阳光明媚,鸟语花香...让我一度不禁感慨:“哇! 哇哇!这个还能这样做,哇!这个原来是这样的呀,不错不错”
在学习的途中历尽心酸坎坷;依稀记得第一次通过向导创建了一个Hello World...就能让我高兴半天,高兴完之后就会陷入沉思;
ObjectARX他必须对应主程序编译器版本进行开发,VC8的代码(C++98)可以拿到VC14上编译; 重点来了,我要是想要进行一些操作时:比如"constexpr","auto"等新标准特性时,这些操作在VC8等旧标准下是不允许的
也许这个原因劝退了很多人....放弃么?开什么玩笑...我可是非洲平头仔呀。
思考:
在我思考怎么解决这个难题时,我脑海里突然冒出一个想法:“既然Objectarx编译后是一个动态链接库、那我能不能用VS2019编译一个DLL去让他调用?” 有了想法我开始实践、
我开始测试以VC8编译的控制台去调用以VC14编译的动态库,结果是可行的。我决定移植至VC8编译的ARX去调用那个库试试,在这个时候他提示失败:"找不到所需的动态链接库";
我开始犯难,在我添加路径至搜索路径后,结果也是可行的。大致运行流程如下图:
又又重点来了、我要是想在动态库里面输出一个“Hello World...”怎么办?库里也没有acutPrintf这个函数啊?放心...你别忘了Objectarx是个动态链接库哦!!!咱把acutPrintf这个函数导出给DLL调用输出字符串
这时候你是不是觉得逻辑就有点复杂了...这个叼毛说的什么啊?什么ARX调用DLL、然后DLL又调用ARX啊?其实一点不复杂!大致如下图:
Demo文件如下:
优点:
一、:可以支持新标准特性、比如你想在编译时隐藏一个字符串....
二、:用新标准编写重复的代码、避免旧标准不存在的特性、标准库而费头脑
跨版本dll调用 不推荐。stl标准模板类型vector array stack等大概率出问题。int char void或许凑巧能用但极不推荐 没稳定性可言 gdfyhao 发表于 2022-12-21 09:03
看懂了开头,后面就看不懂了
有Demo的,实在看不懂再问我也行 现在看不懂,留在将来看 有个示例工程就好了,现在完全没懂 革天明 发表于 2022-12-20 11:33
有个示例工程就好了,现在完全没懂
已上传附件 caoliu023 发表于 2022-12-20 11:18
现在看不懂,留在将来看
:lol我承认这样玩容易绕不过来 谢谢楼主分享 看懂了开头,后面就看不懂了 习惯了增加条件编译(增加C++98语法) gzxl 发表于 2022-12-21 09:08
习惯了增加条件编译(增加C++98语法)
这也是一种方法
页:
[1]
2