小编Kca*_*ats的帖子

从Java调用.NET程序集:JVM崩溃

我有第三方.NET程序集和一个大型Java应用程序.我需要从Java应用程序中调用.NET类库提供的方法.程序集未启用COM.我搜索过网络,到目前为止,我有以下内容:

C#代码(cslib.cs):

using System;

namespace CSLib
{
    public class CSClass
    {
        public static void SayHi()
        {
            System.Console.WriteLine("Hi");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

编译(使用.net 3.5,但使用2.0时也是如此):

csc /target:library cslib.cs
Run Code Online (Sandbox Code Playgroud)

C++代码(clib.cpp):

#include <jni.h>
#using <CSLib.dll>

using namespace CSLib;

extern "C" _declspec(dllexport) void Java_CallCS_callCS(JNIEnv* env, jclass cls) {
    CSLib::CSClass::SayHi();
}
Run Code Online (Sandbox Code Playgroud)

编译(使用VC 2008工具,但使用2003工具时也是如此):

cl /clr /LD clib.cpp
mt -manifest clib.dll.manifest -outputresource:clib.dll;2
Run Code Online (Sandbox Code Playgroud)

Java代码(CallCS.java):

class CallCS {
    static {
       System.loadLibrary("clib");
    }
    private static native void callCS();
    public static void main(String[] args) {
        callCS();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行java类时,Java VM在调用方法时崩溃(它能够加载库):

#
# …

c# java integration

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

c# ×1

integration ×1

java ×1