最近在破解游戏适配到自家公司的SDK和SteamVR,在适配OpenVR的时候遇到一个问题,就是后面添加的Plugins顺序是无法被控制的,导致Compositor对openvr_api.dll产生依赖,但是这个游戏默认先加载Compositor,于是不停的显示Fallback handler could not load library错误,查了很多移动dll路径添加环境变量都没有效果,最后发现这个dll的加载时在需要的时候才会被加载,于是找到在调用其他dll的之前,添加一个无用的函数
[DllImport("openvr_api")]
public static extern void OpenVRInit();
然后在最先的一个Awake函数里调用这个没有用的函数,强制load这个dll,因为我们也不知道openvr_api.dll里面有些什么函数,所以需要加try catch强制不报错
try
{
ThreeGlasses.ThreeGlassesDllInterface.OpenVRInit();
}
catch { }
后面就可以调用自己的Compositor了,因为此时依赖的
openvr_api.dll已经被成功加载了