割掉三千烦恼丝,从此DLL是路人。
本帖最后由 urenai 于 2022-9-5 23:37 编辑120 行 //return (gCallStartupMethod () != 0);// 调用用户程序启动类的启动方法这行注释了,就没问题了,gCallStartupMethod ()的锅。 本来这个函数就是执行下面这一句
换成:
return (((@sn<startup_class>&)g_objVolApp.GetVolApp ()).@sn<startup_method> () != 0);
http://bbs.voldp.com/forum.php?mod=viewthread&tid=14536&highlight=dll dengzf 发表于 2022-9-5 18:58
http://bbs.voldp.com/forum.php?mod=viewthread&tid=14536&highlight=dll
没什么用,
cpp: /Od
cpp: /O2
cpp: /MD
cpp: /Ot
cpp: /Zc:threadSafeInit-
还有一些,全测试了。
都不行。
我感觉像是,DLL的运行基础类的问题。因为,【启动方法】一旦返回,程序就崩。
算了,我等下把w_startup.v 文件扒出来,精简掉所有无用过程再试试。 学习.... 666,楼主问题解决啦?! dll的启动方法是在dll被挂接的时候调用的,按照windows的规定,很多功能是不能在此处执行的. 最好的方法就是你暴露一个初始化方法,由主程序在合适的时候调用一下. 牵一发动全身。
最终解决方案,完美方案。
割掉 启动方法/ 被销毁 虚拟方法。
新建_DLLMain(,,)虚拟方法。
直接回调。 对头,dllmain函数是初始函数,比喻说创建线程,这个API。所创建的线程在dllmain没有返回的情况下。
新线程是不会被启动。
这就是windows规定。 server 发表于 2022-9-6 15:01
牵一发动全身。
最终解决方案,完美方案。
割掉 启动方法/ 被销毁 虚拟方法。
大神,这个具体要怎么做,能不能给个例子啥的
页:
[1]