火狐插件在除本机环境下,其他系统都不能运行

jobscq 2013-09-04 06:01:51
最近因项目需要开发一个简单的火狐插件,用到了MFC的类
开发环境:win7 32bit
语言: C++
配置属性:在静态类库中使用MFC
代码生成:多线程调试(/MTd) (其实各种生成方式都尝试过了)
IDE: vs2010 , windows sdk 7.0 for .NET 4.0(额外安装)
调试环境:firefox 23.0.1
问题: 编译通过无警告,在本机环境下运行没有问题,在其他测试机器上(包括不限于xp,win2003,win7的各种版本,还包括安装了vs2010的系统环境,唯一共同点是都没安装winSDK 7.0)经调试都会出现Entry Point Not Found的异常,浏览器会卡死。

请教有做过类似项目的达人提供帮助,因为C++项目第一次做,所以请知道的达人讲的浅显易懂一点

另外,发现firefox, chrome, safari都是通过npapi来编写的插件,请教chrome是如何查找到插件位置的
...全文
214 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jobscq 2013-09-10
  • 打赏
  • 举报
回复
自己顶一下,求解惑!
jobscq 2013-09-10
  • 打赏
  • 举报
回复
测试机器都是统一32位的,编码都是采用的多字节的字符集 我也听说有调试包,但找到的都是调试扩展的xpi包,我在找找,有结果再跟大神反馈,并和大家分享
赵4老师 2013-09-10
  • 打赏
  • 举报
回复
UNICODE UTF8 32位/64位? 在64位Windows下: 64位exe和dll在目录c:\windows\system32目录下; 32位exe和dll在目录c:\windows\syswow64目录下; 听说火狐插件调试有专门的包,安装火狐时可以选择安装之。
jobscq 2013-09-07
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
请关注depends.exe结果中各dll的版本号。
在测试服务器上重新搭建了环境,并将源代码拷贝编译,编译通过,无错无警告,但在输出里发现了这句 _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 根据百度新增了stdafx.h文件,并如下定义了宏,引用至原程序 #include <winsdkver.h> #ifndef _WIN32_WINNT // 指定要求的最低平台是 Windows Vista。 #define _WIN32_WINNT 0x0501 // 将此值更改为相应的值,以适用于 Windows 的其他版本。 #endif #include <SDKDDKVer.h> 可编译时,输出中依然出现了 _WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h) 不知道这个是否有影响
jobscq 2013-09-07
  • 打赏
  • 举报
回复
引用 8 楼 zhao4zhong1 的回复:
请关注depends.exe结果中各dll的版本号。
已关注,并将高版本的(相对于测试机win2003)dll全部复制进插件dll的安装环境,但结果任然相同
赵4老师 2013-09-06
  • 打赏
  • 举报
回复
先用depends.exe查看exe或dll依赖哪些dll,再将依赖的dll(除系统底层dll外比如kernel32.dll,ntdll.dll,GDI32.dll,USER32.DLL,...)拷贝到exe或dll所在目录。
jobscq 2013-09-06
  • 打赏
  • 举报
回复
每天来看看结果,望大神降临
赵4老师 2013-09-06
  • 打赏
  • 举报
回复
请关注depends.exe结果中各dll的版本号。
jobscq 2013-09-06
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
先用depends.exe查看exe或dll依赖哪些dll,再将依赖的dll(除系统底层dll外比如kernel32.dll,ntdll.dll,GDI32.dll,USER32.DLL,...)拷贝到exe或dll所在目录。
如您所说进行了测试,缺失模块 IESHIMS.dll SHLWAPI.dll IEFRAME.dll。 depends警告:由于在延时加载依赖模块中丢失导入函数,至少有一个模块具有不能解析的导入。 其中: IESHIMS.dll 在 IE的安装目录下找到 SHLWAPI.dll 在测试服务器的 System32目录下有,调试的本机也有 IEFRAME.dll 通过手动复制将缺失的模块dll放入了插件dll所在目录 当前在测试服务器(win2003上)任然无法正常运行插件(插件在火狐的about:plugins中能正常查看),不知道您还有什么思路没?
jobscq 2013-09-06
  • 打赏
  • 举报
回复
引用 5 楼 zhao4zhong1 的回复:
先用depends.exe查看exe或dll依赖哪些dll,再将依赖的dll(除系统底层dll外比如kernel32.dll,ntdll.dll,GDI32.dll,USER32.DLL,...)拷贝到exe或dll所在目录。
收到,谢谢您的回复,我马上测试
jobscq 2013-09-05
  • 打赏
  • 举报
回复
引用 1 楼 bjtbjt 的回复:
应该是库版本的兼容性问题吧、
嗯,我也估计是库的兼容性问题,但没有解决的思路,请问有什么解决方案吗?谢谢!
jobscq 2013-09-05
  • 打赏
  • 举报
回复
有没有大神给解惑呢
5t4rk 2013-09-04
  • 打赏
  • 举报
回复
应该是库版本的兼容性问题吧、

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧