我正在将应用程序从Windows移植到用C#编写的Ubuntu。该应用程序用于查看捕获卡中的视频。我不得不在Windows中为Dll编写一个C#包装器来访问该卡的API,并为Ubuntu的Mono中的相应.so编写了一个Wrapper。
要在ubuntu中为.so构建并运行一个C示例应用程序,我必须传递" -rdynamic"使用gcc使应用程序正确运行,否则会出现错误,例如"未定义的符号:XMoveWindow"。当我尝试运行我的C#应用程序时,我得到了"未定义的符号:XvShmCreateImage"。我怀疑我需要通过类似" -rdynamic"单声道编译器,但我找不到单声道的等效命令。是否有一个等效的命令,如果有,它是什么?
提前致谢
安德鲁
答案 0 :(得分:0)
这可能意味着您的.so库被错误编译(它没有引用X11库)。 你应该正确地重新编译这个.so lib,或者你可以在调用这个lib之前P / Invoke libX11和libXshm中的一些函数(函数不需要存在,但是在这种情况下你需要捕获异常,这需要加载库在这个过程中,以后加载器可以找到它们导出的符号。)