我有很多这样的方法:
int add5(int val)
{
return add5Wrap(val);
}
int instanceMethod(void)
{
return instanceMethodWrap();
}
int classMethod(void)
{
return classMethodWrap();
}
void getPropertyString(char * outStr)
{
outStr = getProperty();
}
void setPropertyString(char * string)
{
setProperty(string);
}
int start(void)
{
initialise();
return 0;
}
他们在这样的标题中声明:
int add5(int val);
int instanceMethod(void);
int classMethod(void);
void getPropertyString(char * string);
void setPropertyString(char * string);
int start(void);
他们与一些客观C一起编译,他们与dylib互动。
dylib加载。据我所知,所有的方法都没有抱怨*,除了一个。
start()无法运行。它给出了一个EntryPointNotFoundException。
可能导致此问题的原因以及如何解决?
*他们仍然提供错误的值,因为没有初始化。
C#方:
[DllImport("mydll.dylib")]
public static extern int start ();
[DllImport("mydll.dylib")]
public static extern int add5 (int val);
[DllImport("mydll.dylib")]
public static extern int instanceMethod();
[DllImport("mydll.dylib")]
public static extern int classMethod();
start();
add5(5);
等
答案 0 :(得分:0)
我找到了答案。我假设MonoMac文件夹正在寻找dylib是/ Library / Frameworks。实际上它正在查找/ usr / lib。 / usr / lib中的库版本比/ Library / Frameworks中的库版本要旧得多。