c程序怎么改为java程序_如何将Java程序的入口点更改为C签名?
我在JNA試圖在
Java程序中執(zhí)行一些C代碼時愚弄.這是我在網(wǎng)上找到的一個工作示例(構(gòu)建路徑中需要JNA):
package core;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
public class CoreController {
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary) Native.loadLibrary(
(Platform.isWindows() ? "msvcrt" : "c"), CLibrary.class);
void printf(String format, Object... args);
}
public static void main(String[] args) {
CLibrary.INSTANCE.printf("Hello, World\n");
for (int i = 0; i < args.length; i++) {
CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
}
Native.main(args);
}
}
實(shí)際上,我正在嘗試做三件事(看似無重復(fù)的).
1.)程序的入口點(diǎn)應(yīng)更改為以下C簽名:
void __stdcall RVExtension(char *output, int outputSize, const char *function);
2.)Java程序應(yīng)該能夠設(shè)置給定的輸出參數(shù).
3.)程序應(yīng)編譯為DLL.
在C中,此問題將如下解決:
#include "stdafx.h"
extern "C" {
__declspec (dllexport) void __stdcall RVExtension(char *output, int outputSize, const char *function);
}
void __stdcall RVExtension(char *output, int outputSize, const char *function) {
strncpy_s(output, outputSize, "IT WORKS!", _TRUNCATE);
}
所以問題是,Java在某種程度上可能嗎?如果是這樣,我會很高興看到一些代碼示例,因?yàn)槲以谶@里進(jìn)入了很多新的領(lǐng)域.我甚至不知道JNA在這里是否是一個合適的解決方案.如果有人有其他想法,請告訴我!
親切的問候,
杰森
總結(jié)
以上是生活随笔為你收集整理的c程序怎么改为java程序_如何将Java程序的入口点更改为C签名?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux终端怎么打开文件(linux终
- 下一篇: java stream 分组求和_Jav