递归火山软件开发平台

标题: 割掉三千烦恼丝,从此DLL是路人。 [打印本页]

作者: urenai    时间: 2022-9-5 17:09
标题: 割掉三千烦恼丝,从此DLL是路人。
本帖最后由 urenai 于 2022-9-5 23:37 编辑

120 行     //return (gCallStartupMethod () != 0);  // 调用用户程序启动类的启动方法这行注释了,就没问题了,gCallStartupMethod ()的锅。 本来这个函数就是执行下面这一句
换成:
        return (((@sn<startup_class>&)g_objVolApp.GetVolApp ()).@sn<startup_method> () != 0);  



作者: dengzf    时间: 2022-9-5 18:58
http://bbs.voldp.com/forum.php?m ... 6&highlight=dll
作者: urenai    时间: 2022-9-5 19:44
dengzf 发表于 2022-9-5 18:58
http://bbs.voldp.com/forum.php?mod=viewthread&tid=14536&highlight=dll

(, 下载次数: 38)

没什么用,
cpp: /Od
cpp: /O2
cpp: /MD
cpp: /Ot
cpp: /Zc:threadSafeInit-
还有一些,全测试了。
都不行。
我感觉像是,DLL的运行基础类的问题。因为,【启动方法】一旦返回,程序就崩。






作者: urenai    时间: 2022-9-5 19:54
算了,我等下把w_startup.v 文件扒出来,精简掉所有无用过程再试试。
作者: urenai    时间: 2022-9-5 23:05
学习....
作者: wjks86    时间: 2022-9-6 10:28
666,楼主问题解决啦?!
作者: 飞扬工作室    时间: 2022-9-6 14:55
dll的启动方法是在dll被挂接的时候调用的,按照windows的规定,很多功能是不能在此处执行的. 最好的方法就是你暴露一个初始化方法,由主程序在合适的时候调用一下.
作者: server    时间: 2022-9-6 15:01
牵一发动全身。
最终解决方案,完美方案。
割掉          启动方法/ 被销毁 虚拟方法。
新建_DLLMain(,,)虚拟方法。
直接回调。
作者: server    时间: 2022-9-6 15:09
对头,dllmain函数是初始函数,比喻说创建线程,这个API。所创建的线程在dllmain没有返回的情况下。

新线程是不会被启动。
这就是windows规定。
作者: wjks86    时间: 2022-9-6 15:52
server 发表于 2022-9-6 15:01
牵一发动全身。
最终解决方案,完美方案。
割掉          启动方法/ 被销毁 虚拟方法。

大神,这个具体要怎么做,能不能给个例子啥的




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4