Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java访问DLL中的C#方法_Java_C#_Dll_Dllimport - Fatal编程技术网

从Java访问DLL中的C#方法

从Java访问DLL中的C#方法,java,c#,dll,dllimport,Java,C#,Dll,Dllimport,我在尝试从Java调用用C#编写的函数时遇到问题。我已经加载了包含函数的dll 错误消息: java.lang.UnsatisfiedLinkError: app.clsValidation.validate(Ljava/lang/String;)Ljava/lang/String; 编译成64位dll的C代码: namespace library { public class clsValidation { public string validate(strin

我在尝试从Java调用用C#编写的函数时遇到问题。我已经加载了包含函数的dll

错误消息:

java.lang.UnsatisfiedLinkError: app.clsValidation.validate(Ljava/lang/String;)Ljava/lang/String;
编译成64位dll的C代码:

namespace library {

    public class clsValidation {

        public string validate(string txt) {
            return txt;
        }
    }
}
Java代码

班级:

package app;

public class clsValidation {

    static {
        System.loadLibrary("library");
    }

    public native String validate(String txt);
}
我在Java中如何称呼它:

String txt = "something";
String result = new clsValidation().validate(txt);

这是意料之中的。Java代码将C#DLL视为非托管库。事实并非如此。它不导出可以使用
LoadLibrary
GetProcAddress
导入的非托管函数

如果希望从.net DLL导出非托管函数,则可以:

  • 使用Robert Giesecke的UnmanagedExports来完成此操作
  • 制作一个混合模式C++/CLI程序集,用于导出非托管函数

  • 其他选项包括通过COM公开功能,而COM很容易从Java中使用。

    感谢您的指导!现在我知道该找什么了。你说的COM是什么意思?试试网络搜索。我可以这么做,但我想你也可以。我只是想知道COM的意思。。。我在谷歌搜索“COM java”时没有得到任何东西。谢谢。谷歌网站自己。是微软技术公司的。