我的任务是将C#应用程序迁移到java应用程序。C#应用程序使用两个DLL来完成它的工作,与外围设备相结合。
DLL的标题在C#中如下所示
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct InnerStructure
{
/// COM port used by the device
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = PORT_SIZE)] //7
publi
我有一个C++函数:
struct Result {
//...
};
bool doSomething(Result[]);
如果我使用以下JNA绑定,则函数调用可以正常工作:
public class Result extends Structure {
//...
}
public interface CPPLibrary extends Library {
public static final CPPLibrary INSTANCE = (CPPLibrary)Native.loadLibrary("dllname");
boolea
好的,让jna包装器解决方案在使用jna的dll中映射导出的函数是很容易的:
long f1(int x), just int
long f2(char* y), just char[]
但是如何处理long f3(char** z)呢?
我需要f3的结果(Long)以及Java端的z值。
请不要说应该重写cpp代码来避免这种情况:-)
我试着用JNA和Kotlin在一起,我遇到了一个问题。Caused by: java.lang.IllegalArgumentException: class [Lcom.sun.jna.platform.win32.WinDef$HMODULE; is not a supported argument type (in method EnumProcessModulesEx in class kotmem.unsafe.Psapi)
我的Psapi直接映射对象:
package kotmem.unsafe
import com.sun.jna.*
import com.sun.jna.pl
C代码是
extern int APIENTRY LSGetDocData(
short hConnect,
HWND hWnd,
unsigned long *NrDoc,
LPSTR FilenameFront,
LPSTR FilenameBack,
LPSTR Reserved1, // not used must be NULL
LPSTR Reserved2, // not us
我尝试通过JNA使用来自C++的动态链接库来与Fanuc数字控件进行通信,但是总是得到这个错误: Exception in thread "main“java.lang.Error: Invalid memory access 我尝试使用的特定C++方法是这个https://www.inventcom.net/fanuc-focas-library/handle/cnc_allclibhndl3 FWLIBAPI short WINAPI cnc_allclibhndl3(const char *ipaddr, unsigned short port, long timeout, u
我创建了一个Java代码,试图访问在LoadProject中定义的类IProjectFactory的方法IProjectFactory。DLL文件的描述是: IProjectFactory用于将项目文件加载到内存中。IProjectFactory是myAPI.dll程序集中的静态类。它公开LoadProject方法,该方法接受包含要加载文件的路径的字符串,并返回对结果IProject的引用。使用IProject接口,您可以以各种方式操作加载的项目。
import com.sun.jna.Library;
import com.sun.jna.Native;
public class MyCl
我正在使用JNA从Java访问一些 dll 函数,这个dll本机函数声明如下:
// it returns (long)
H264_Login (char *sIP, unsigned short wPort, char *sUserName, char *sPassword, LP_DEVICEINFO lpDeviceInfo, int *error); // where LP_DEVICEINFO is a struct
因此,我在库接口中声明如下:
long H264_Login(String sIP, short wPort, String sUserName, String sPa
在成功创建了与JNA studio的接口后,我想调用一个DLL文件。我在调用必要的方法时遇到问题。
请看下面的界面。
public interface MME9000Library extends Library {
public static final String JNA_LIBRARY_NAME =LibraryExtractor.getLibraryPath(" MME9000", true, TP9000Library.class);
public static final NativeLibrary JNA_NATIVE_LIB Nativ