有时候未必能找到linux下的库,这个时候调用win32的DLL就有点用了。不过这是有条件限制的:
就是: 仅仅在i386下能行的通。
方法嘛:
1、比较简单的是就行 wine一样,使用winegcc来编译就可以调用DLL了,不过需要依赖于wine的库,并且wine有依赖于X11的库,未免有些大了。
2、复杂一些就是像Mplayer那样,把PE文件的装载从wine源码里面提取出来,或者自己另外写吧。这样虽然程序显得很NATIVE, 但是限制就更大了: 需要根据自己的情况来处理DLL的导入函数。假如DLL本身依赖太复杂,那么工作量就很大的了,如果调用了很多的KERNEL32.DLL函数就更棘手了。
个人写了一套加载PE文件的库,测试过了,可以成功的加载COOk.dll, 和drvc.dll来来解码rmvb, 然后使用本地SDL库来播放。libmpg123.dll的库调用也很正常。
代码就不放出来了,毕竟用处不大。
阅读(1693) | 评论(0) | 转发(0) |