试着用纯C/C++写Loader,然后把C#写的一个测试Demo加载进去。
如果VC没有使用CLR类库,就提示没有运行环境,这个好理解。给VC加了一个CLR库,然后提示80004005错误。
按PE格式加载,我试过,如果加载的是用VC++写的Console或者Form程序,都正常的。但是,加载C#写的程序,就会有问题。不管是Console还是Form程序。
我是不是少了什么?
1、你的NET能不能单独运行?还是只在C++LOADER里面不能运行?
2、常见的80004005错误解决方法:http://www.jz123.cn/text/182.html
你试着将与数据库相关的代码先屏蔽试试。
独立是可以运行的。独立没问题。只是一个简单的DEMO,尝试了的DEMO包括一个简单的Console,和 一个简单的WinFOrm,只是初始建立的那个样子,我甚至把Console的所有头都去掉,所有引用都去掉,还是问题。
另外,我没用数据库,我只是想把我C#写的程序,使用自己的加载器加载运行。加载器加载VC++和MFC的程序,都是没问题,涉及到.net framework库,就有问题。所以,我怀疑是跟找不到运行环境库有关。但是,如果找不到的话,会直接报没有运行环境,现在应该是找到了库。
网络上可能是权限问题,我使用管理员运行还是一样结果。
我也试过把程序放在.net framework的目录下面跑,还是找不到,甚至,我把framework的那些DLL文件都COPY到程序目录下面,还是一样的结果。
所以,我怀疑是不是需要把什么库或者DLL文件,放在Loader里面,然后自己组织路径。。。
以前说过,飞信是使用自己写的虚拟机,这个应该是比较老的信息,好几年前就听说,飞信里面好像是有个虚拟机。
如果我把自己写的Loader自己加个虚拟机,应该也可以,但是,最好不要。
飞信的虚拟机好像是2。0的,而且是比较老版本的飞信。
网络上能找的方法,我都找了,才过来提问的。