2014-09-01 1 views
0

java에서 C# dll 함수를 사용하려고합니다. 함수를 찾을 수 없다는 오류가 발생했지만 DLL이 발견되어 성공적으로로드되었습니다.찾고있는 오류 : ''지정된 프로 시저를 찾을 수 없습니다.

내가 문제를 찾고있는 동안 컴파일러가 기호와 전체 함수 이름을 'myFunction'대신 'myFunction @ 32'와 같은 것으로 맹 글링하는 것을 발견했습니다. 불행히도 그것은 내 문제가 아니 었습니다.

public interface IConectorT extends Library { 
boolean DeleteCustomObjectRecord(String company, String username, String password, int cdoId, 
String cdoName, int[] cdoRecordIds); 


IConectorT INSTANCE = (IConectorT) Native.loadLibrary("C:\\Windows\\System32\\Eloqua API", 
IConectorT.class, new HashMap() { 
    { 
     put("DeleteCustomObjectRecord","[email protected]"); 
    } 
}); 
} 

@ 64, @ 32, @ 16 등을 시도했습니다. 접두사로 "_"을 추가하려고 시도했습니다. 나는 또한 ".dll"을 사용하여 절대 경로를 시도했지만없이 상대 경로를 동일하게 시도했습니다. (하지만 로딩이 문제가되지 않습니다)

나는 약간의 업데이 트를 시도하고 지금은이 오류를 반환

Exception in thread "main" java.lang.UnsatisfiedLinkError: 
Main.Main.DeleteCustomObjectRecord(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava 
/lang/String;[I)Z 
at Main.Main.DeleteCustomObjectRecord(Native Method) 
at Main.Main.main(Main.java:15) 

답변

1

지금까지 내가 아는 한, JNA는 기본 라이브러리입니다. Java에서 액세스하기 전에 C# 라이브러리 용 C/C++ 랩퍼를 작성해야합니다.

Check this answer

+0

아니요 /. –

+0

C/C++ dll을 사용하고 있습니까? – ortis

+0

C# 아마 어쩌면 당신 말이 맞아요, 그걸 어떻게 할 수 있니? 감사. –