0

我正在将一个应用程序从 Windows 移植到用 C# 编写的 Ubuntu。该应用程序用于查看来自采集卡的视频。我不得不为 Windows 中的 Dll 编写一个 C# 包装器来访问卡的 API,并为 Ubuntu 的 Mono 中的相应 .so 编写了一个包装器。

要在 ubuntu 中为 .so 构建和运行 C 示例应用程序,我必须将“-rdynamic”传递给 gcc 以使应用程序正确运行,否则会出现诸如“未定义符号:XMoveWindow”之类的错误。当我尝试运行我的 C# 应用程序时,我得到“未定义的符号:XvShmCreateImage”。我怀疑我需要在单声道中将“-rdynamic”之类的东西传递给编译器,但我找不到单声道的等效命令。是否有等效的命令,如果有,它是什么?

提前致谢

安德鲁

4

1 回答 1

0

这可能意味着您的 .so 库被错误编译(它没有引用 X11 库)。您应该正确重新编译此 .so 库,或者您可以在调用此库之前 P/Invoke libX11 和 libXshm 中的某些函数(这些函数不需要存在,但在这种情况下您需要捕获异常,这是加载库所必需的在这个过程中,以便加载器以后可以找到它们导出的符号)。

于 2013-05-22T10:27:11.867 回答