我是 Linux 菜鸟,我正在尝试将我的库从 Windows 移动到 Linux。它是本机二进制文件 (mylib.so),但将由单声道 ( [DllImport()] ) 加载。我在这个库中使用 pcre(Perl 兼容正则表达式)。当我的 .NET 可执行文件尝试加载 mylib.so 时,它会引发异常(找不到 lib)。当我设置MONO_LOG_LEVEL=debug
. 我说找到了我的库,但没有找到 pcre 库。
我试图动态加载它(dlopen(), dlsym()
)。当我构建我的库的可执行版本将它与 dl (-ldl) 链接时,它工作正常。但是当我从单声道加载它时,我得到了 SIGSEGV。
我创建了这个库,例如(对于带有 dl 的版本):
g++ -fPIC -c *.cpp
g++ -shared -Wl,-soname,libmylib.so.1.1 -ldl -o libmylib.so.1.1 *.o
我创建了链接到mylib.so and dl
(-l:libmylib.so.1.1 -ldl) 的简单测试程序,它可以工作。
我想我需要强制 mylib 与 dl 链接(或直接与 pcre 链接),但我不知道如何。(我希望这是可能的)
我想要的只是创建使用 pcre 并在单声道下工作的库。