我要创建一个C# web项目(直接按web模板创建的,没有任何功能页面的测试项目), 去调用一个用java编写生成的dll (使用ikvm8.7 生成的dll, 以下简称A.dll), , 但是, 这个java的dll会加载引用一个C++编写生成的dll(以下简称B.dll) . java编写的A程序中(在java环境下), 是成功调用了B.dll的方法的 ; 之后在C#项目中, 引用了 A.dll , 以及前文提到的ikvm8.7中的\bin下的IKVM.OpenJDK.Core.dll 、IKVM.Runtime.dll、IKVM.Runtime.JNI.dll ,用一个测试按钮去调用A.dll的方法(该方法会去加载实例化B.dll, 采用的是加载同级目录下的B.dll文件方法), 然后看是否返回有值判断成功与否, 但是报错如下 :
在页面上用LAbel去返回C#在调用A.dll时 , A.dll加载B.dll的文件路径 , 结果如下 : 第一个是在java的程序里写加载同级目录, 所获取的目录 , 第二个就是在java程序里写死的本地文件路径
后来, 我想在C#中引用B.dll , 但是报错 :
像这种直接和间接引用不同语言生成的dll , 应该如何处理 ? 思路是什么 ?
另外, 我在测试过程中, 还遇到如下疑问 :
- 因为B.dll 是32位的(无法重新改写它) , 因此java在编写的时候为了适配, 也用了32位(JDK8, ikvm8.7) , 我在C#中用.net framework3.5, x86(同时将windows的IIS应用池也开启32位) , 但是整个C#项目报错引用dll版本不一致, A.dll的运行版本在v4.0.30319 , ikvm系列的运行版本在v2.0.50727 , .net 3.5系列也是在v2.0.50727 , 后来我换成.net 4.0(v4.0.30319)之后就可以了(ikvm系列的运行版本还是在v2.0.50727) , 但是以后真正要调用A.dll的项目是用.net3.5框架, 这种情况要如何处置啊 ?
(我才接触C#没几天, 所有知识东拼西凑的, 还望各位讲解详细一些, 多谢多谢 !!)