我有很多这样的方法:

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);


等等

最佳答案

我找到了答案。我以为MonoMac正在寻找dylib的文件夹是/ Library / Frameworks。实际上,它在/ usr / lib中查找。 / usr / lib中的库版本比/ Library / Frameworks中的库版本旧得多。

10-02 01:35
查看更多