<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hi,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Only symbols exported from shared objects/DLLs/dylibs can be called (for eg. marked declspec(dllexport) on Windows, listed in mapfile on Unix platforms and so on). Using platform specific tools such as "nm" (Linux), "otool" (macOS) etc, you can check if that
symbol is exported from the library.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Also, you need to load that native library using System.load/loadLibrary API before creating native method handles.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
Hope this helps,</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);" class="elementToProof">
-Sundar</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> jextract-dev <jextract-dev-retn@openjdk.org> on behalf of dreamlike_ocean lei <dreamlike.vertx@gmail.com><br>
<b>Sent:</b> 04 September 2022 20:00<br>
<b>To:</b> jextract-dev@openjdk.org <jextract-dev@openjdk.org><br>
<b>Subject:</b> static inline and jextract</font>
<div> </div>
</div>
<div>
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">English is not my first language<br>
</div>
<div dir="ltr"><br>
</div>
<div dir="ltr">I used jextract to generate a java-bound version of liburing.h. <br>
</div>
<div>I found an unreasonable situation。 such as:<br>
</div>
<div>`static inline void io_uring_prep_readv`<br>
</div>
<div>
<div><br>
</div>
<div>It is not an exported function,But jextract generates code like this</div>
</div>
<div> public static void io_uring_prep_readv(Addressable var0, int var1, Addressable var2, int var3, long var4)<br>
</div>
<div>when I call ` io_uring_prep_readv` in java, It will throw Exception in thread "main" java.lang.UnsatisfiedLinkError: unresolved symbol: io_uring_prep_readv</div>
<div> Isn't this unreasonable and inconvenient?Shouldn't only exported functions be generated?</div>
<div>————————Chinese version—————————————<br>
</div>
<div>我利用jextract 生成liburing.h的java绑定</div>
<div>但是我发现了一个很奇怪的情况,像`static inline void io_uring_prep_readv`这种函数并不是导出的函数,但是jextract 确实生成了这个的java代码。</div>
<div> public static void io_uring_prep_readv(Addressable var0, int var1, Addressable var2, int var3, long var4)<br>
</div>
<div>当我调用用java去调用io_uring_prep_readv时,它会抛出一个Exception in thread "main" java.lang.UnsatisfiedLinkError: unresolved symbol: io_uring_prep_readv异常</div>
<div>这确实不太合理也不太方便吧,难道不应该只生成导出的函数吗?</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>