要开发能移植到官方版本wireshark的dll文件必须搞清楚官方编译时使用的VS版本,选择与官方版本一样的VS才能够互相之间通用dll文件,具体原因不明确,但是确实有影响,亲身经验。如果使用和官方不一样的编译器也可以编译成功,编译出来的wireshark也可以使用,但是加载dll到官方发布的这个版本时会出现。
“Couldn't load moduleC:\Program Files\Wireshark\plugins\x.x.x\xxxx.dll: `C:\ProgramFiles\Wireshark\plugins\x.x.x\xxxx.dll': 找不到指定的模块。”
如下图示:
图:找不到指定的模块
上图为我在编译1.8.4版本的自用dll成功后,试图拷贝到官方版本的1.8.4版本的wireshark的相应目录中直接使用时遇到的问题。我使用的VS2008,官方Developer’s Guide里建议使用VS2010。一开始不以为意,认为能编译出来就行,没想到最终还是因为VS的原因导致了这个错误。在换成2010编译后就好了。
经过测试,1.6.x官方版本的wireshark是使用的vs2008编译的。所以想要开发这个版本下的dll的朋友请使用vs2008。当然如果你是想要自己大刀阔斧的修改wireshark不使用官方版本的朋友,用哪个版本VS编译都行。
注:估计1.4.x或者更早的版本还会使用到VS2005,但是VS2005和VS2008之间是不是也有这种问题并没有测试过,可能存在,也可能不存在,有待测试。