[疑难] xpcom.dll为何不能正常加载?
qiezi
2007-04-11
就这一行代码还抛出异常,错误码是1114,可以肯定它找到了这个DLL,换成一个不存在的名字时,没有异常提示,错误码是126。我的当前路径是在xulrunner路径下,换成user32.dll就可以正常加载。
图片连接: 有人能解释这个吗? import std.loader; void main() { scope auto dll = new ExeModule(r"xpcom.dll"); //dll.getSymbol("NS_InitXPCOM2"); } |
|
qiezi
2007-04-11
惨淡,原来是这个:
引用 #define ERROR_DLL_INIT_FAILED 1114L 不过依旧不知道如何解决。 |
|
oldrev
2007-04-11
可能这个 DLL 用到了 C 运行时需要初始化?
试试生成一个导入库隐式加载? loader没文档,估计是已经放弃的了。 |
|
qiezi
2007-04-11
隐式加载不成功,测试了一个最简单的方法也不行,我才试试动态加载的。
本来想在Linux下做,gentoo迟迟不发布,2006.1安装没成功。ubuntu安装后iso9660/vfat/ntfs都不认了,没办法继续安装g++和其它工具。只好在windows上测试,看来不顺啊 |
|
oldrev
2007-04-11
qiezi 写道 隐式加载不成功,测试了一个最简单的方法也不行,我才试试动态加载的。
本来想在Linux下做,gentoo迟迟不发布,2006.1安装没成功。ubuntu安装后iso9660/vfat/ntfs都不认了,没办法继续安装g++和其它工具。只好在windows上测试,看来不顺啊 Ubuntu 不认文件系统?我的 6.10 没什么问题啊。ntfs 都是用的 ntfs-3g。直接 apt-get 就搞定了。 |
|
qiezi
2007-04-11
这个是隐式加载的:
import nsXPCOM; import nsIFile; import nsIDirectoryServiceProvider; import nsIServiceManager; void main(char[][] args) { nsIServiceManager serviceManager = null; nsIFile binDirectory = null; nsIDirectoryServiceProvider appFileLocationProvider = null; if (args.length > 1) NS_InitXPCOM2(&serviceManager, binDirectory, appFileLocationProvider); } 这里不传递参数(这时args.length == 1)也无法启动,应该也是加载DLL失败。 |
|
h_rain
2007-04-11
在vc中试过吗?
xpcom.dll好像还需要同时加载其他的dll吧,所有的dll都在吗? |
|
qiezi
2007-04-11
都在一起的,xulrunner可以跑起来,我的程序就放在xulrunner同一文件夹下。
VC刚好也坏了,所以还没测试。。 |
|
qiezi
2007-04-11
oldrev 写道 qiezi 写道 隐式加载不成功,测试了一个最简单的方法也不行,我才试试动态加载的。
本来想在Linux下做,gentoo迟迟不发布,2006.1安装没成功。ubuntu安装后iso9660/vfat/ntfs都不认了,没办法继续安装g++和其它工具。只好在windows上测试,看来不顺啊 Ubuntu 不认文件系统?我的 6.10 没什么问题啊。ntfs 都是用的 ntfs-3g。直接 apt-get 就搞定了。 不知道安装出了什么问题,几个文件系统都没装上,光驱也用不了: 引用 root@lijie-laptop:~# apt-get install g++ 正在读取软件包列表... 完成 正在分析软件包的依赖关系树 Reading state information... 完成 将会安装下列额外的软件包: g++-4.1 libstdc++6-4.1-dev 建议安装的软件包: gcc-4.1-doc lib64stdc++6 libstdc++6-4.1-doc 下列【新】软件包将被安装: g++ g++-4.1 libstdc++6-4.1-dev 共升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 4 个软件未被升级。 需要下载 0B/4194kB 的软件包。 解压缩后会消耗掉 16.5MB 的额外空间。 您希望继续执行吗?[Y/n]y 更换介质:请把标有 “Ubuntu 6.10 _Edgy Eft_ - Release i386 (20061025)” 的碟片插入驱动器“/cdrom/”再按回车键 没办法了,有什么办法让它从网上下载,不用光驱吗? |
|
qiezi
2007-04-11
啊哈,找到了,软件包管理器里面设置一下就行了。希望顺利。。
|