PInvoke发现了一些功能,但没有发现其他功能

时间:2014-02-07 16:01:17

标签: c# c pinvoke dylib monomac

我有很多这样的方法:

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

1 个答案:

答案 0 :(得分:0)

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