2013-02-13 2 views
0

우리는 IKVM을 사용하여 * .jar를 우리가 코드를 Mono로 C#으로 마이그레이션하는 데 사용하는 dll로 변환합니다. 우리는 항아리로 작업 할 때 문제는 특히 JNI 호출, 폭발물 JnativeHook를 포함, 그 우리가 iKVM을을 사용하여 변환 할 때, 나는 다음과 같은 저자에 오류가보고 한 오류를 확인하십시오네이티브 호출을 포함하는 * .jar를 DLL (Mono C#)로 변환하는 방법

I'm trying to use JnativeHook.jar library, its work for my java apllications, However: 
Not: JnativeHook its a cross-platform containes 3 .dll depends on the OS when the java application is running (dynamic loading of *.dll)... 
JnativeHook.jar containes also a package(demo) that containes a main classe, i have solved this problem by deleting this one, now i'm sure that will be converted to dll... 
finally, when i try to convert this one to .dll i get this error: 

C:\Users\marwen\Desktop\Kid protector\Tools and IDE\ikvmbin-7.2.4630.5\bin>ikvmc JNativeHook.jar 
IKVM.NET Compiler version 7.2.4630.5 
Copyright (C) 2002-2012 Jeroen Frijters 
http://www.ikvm.net/ 

note IKVMC0002: Output file is "JNativeHook.dll" 

*** INTERNAL COMPILER ERROR *** 

PLEASE FILE A BUG REPORT FOR IKVM.NET WHEN YOU SEE THIS MESSAGE 

System.UnauthorizedAccessException: L'accès au chemin d'accès 'C:\Users\marwen\Desktop\Kid protector\Tools and IDE\ikvmbin-7.2.4630.5\bin\JNativeHook.dll' est refusé. 
    à System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) 
    à System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, Str 
ing msgPath, Boolean bFromProxy) 
    à System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, String msgPath, Boolean bFromProxy) 
    à System.IO.FileStream..ctor(String path, FileMode mode) 
    à IKVM.Reflection.Writer.ModuleWriter.WriteModule(StrongNameKeyPair keyPair, Byte[] publicKey, ModuleBuilder moduleBuilder, PEFileKinds fileKind, PortableExecutableKinds portableExecutableKind, Ima 
geFileMachine imageFileMachine, ResourceSection resources, Int32 entryPointToken, Stream stream) 
    à IKVM.Reflection.Emit.AssemblyBuilder.SaveImpl(String assemblyFileName, Stream streamOrNull, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine) 
    à IKVM.Reflection.Emit.AssemblyBuilder.Save(String assemblyFileName, PortableExecutableKinds portableExecutableKind, ImageFileMachine imageFileMachine) 
    à IKVM.Internal.CompilerClassLoader.Save() 
    à IKVM.Internal.CompilerClassLoader.Compile(String runtimeAssembly, List`1 optionsList) 
    à IkvmcCompiler.Compile(String[] args) 
    à IkvmcCompiler.Main(String[] args) 

로부터 응답을 저자 :

>Comment By: Jeroen Frijters (jfrijters) 
Date: 2013-02-12 03:28 

Message: 
Thanks. Fixed in cvs. BTW, the error is because ikvmc can't write to 
JNativeHook.dll (probably because you don't have write access to the 
directory). 

작성자가 알 수있는 것처럼 우리에게 솔루션을 제공하지 않고 ords ..

는 내가 뭘 이해는 내장 DLL입니다은

이 몇 가지 제안이 ... 사실 iKVM을합니다 (JAR) 안에 그것을 작동하는 방법을 알고하지 않는 오류를 만들 이 문제를 해결하려면? 추신 : Fixed in cvs의 의미는 무엇입니까? 감사합니다.

+3

CVS는 소스 제어 시스템입니다. 저자는 코드가 수정되었음을 알려주고 있습니다 (꼭 풀어 놓을 필요는 없음). 그는 또한 문제의 근본 원인이 무엇이라고 생각 하는지를 말했습니다. – Perception

답변

0

문제의 원인은 출력 위치에 대한 쓰기 권한이 없다는 것입니다. 쓰기 권한이있는 다른 위치에서 명령을 실행하십시오.

수정 프로그램이 "내부 컴파일러 오류"메시지를 방지 할 것이라고 생각합니다.