#ifdef __WIN32__
extern "C"{
__declspec (dllexport) int __stdcall SpellInit(const char *path_dic, const char *path_volg);
__declspec (dllexport) int __stdcall SpellTerminate(void **lista);
__declspec (dllexport) LPSTR __stdcall SpellSuggestChar(const unsigned char *palabra);
__declspec (dllexport) LPSTR SpellGetUdr(void);
__declspec (dllexport) int SpellSetOptions(int option);
}
SpellInit
SpellTerminate
SpellSuggestChar
_SpellGetUdr@0
_SpellSetOptions@4
错误:由于隐式依赖模块中缺少导出函数,至少有一个模块具有未解析的导入。错误:发现具有不同CPU类型的模块。
但是这个DLL是从另一个运行良好的DLL派生出来的(尽管它是从VB代码调用的),但它也抛出了同样的两个错误。
最后,我是这样称呼它的:
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.win32.StdCallLibrary;
import java.util.HashMap;
public class Test_DLL {
public interface ORTCLI extends StdCallLibrary {
ORTCLI INSTANCE = (ORTCLI) Native.loadLibrary("ORTCLI", ORTCLI.class, new HashMap(){{
put("SpellGetUdr","_SpellGetUdr@0");
put("SpellSetOptions","_SpellSetOptions@4");
}});
int SpellInit(String path_dic, String path_volg);
String SpellSuggestChar(String pal);
int SpellAddUdr(String pal);
String SpellGetUdr();
int SpellTerminate();
}
Technomage说得对,所有方法都应该声明为使用stdcall,而不是将方法与stdcall混合使用或不使用。但这只是问题的一半。
最后,解决方案来自更改SQLite编译选项,特别是-dThreadSafe参数。激活后一切都开始正常工作。
干杯。
线程“main”java.lang.UnsatifiedLinkError:查找函数“StartConector”时出错:找不到指定的过程。在com.sun.jna.function.(function.java:179)在com.sun.jna.nativelibrary.getfunction(nativelibrary.java:350)在com.sun.jna.nativelibrary.
我在使用JNA的java中使用dll,但我得到以下错误 线程“main”java中出现异常。lang.UnsatifiedLinkError:查找函数“GetStatus”时出错:找不到指定的过程。 不知道如何解决此问题? 请帮忙。 这是java代码
问题内容: 我的代码有最后一个问题,涉及反射包中的.Call函数。 所以我在打这样的电话: 我正在执行.Call的方法如下: 我不太了解的是如何操作“ in”变量,以便将需要的映射正确传递到函数中。我看到make()中的第二个参数是参数的长度吗?但是我不太了解如何格式化var以正确传递参数。我递归地遇到错误消息: 任何帮助将非常感激! 问题答案: 来自: 呼叫调用函数与输入参数。例如,如果,代表去
我从Ronak Shah和akrun(在本文中)那里学到了如何构造正则表达式,以从数据帧(在我的示例中为alldata)中排除除这些单词之外的所有术语, ^\B WORD 1|WORD 2|WORD 3|WORD 4|WORD 5\ 但出于某些原因,我不明白为什么它给了我 “WORD2”,“WORD3”,不适用 而不是 “WORD1 WORD2 WORD5”,“WORD3”,不适用 以下是我的示例