C# ubuntu下的共享库

C# ubuntu下的共享库,c#,ubuntu,pinvoke,single-responsibility-principle,C#,Ubuntu,Pinvoke,Single Responsibility Principle,我使用make在ubuntu下编译了srp-2.1.2,它创建了一个文件libsrp.a。有人能告诉我如何使用libsrp.a作为共享库吗?我想使用dllimport在ubuntu下的c#文件中使用libsrp。请告诉我libsrp.a文件的含义 谢谢 好的,当我使用nm-D libsrp.a时 那我有 c2@ubuntu:~/Desktop/srp-2.1.2/libsrp$nm-D libsrp.a t_client.o: nm:t_客户端。o:无符号 请告诉我如何获得所有符号 谢谢libs

我使用make在ubuntu下编译了srp-2.1.2,它创建了一个文件libsrp.a。有人能告诉我如何使用libsrp.a作为共享库吗?我想使用dllimport在ubuntu下的c#文件中使用libsrp。请告诉我libsrp.a文件的含义

谢谢

好的,当我使用nm-D libsrp.a时 那我有

c2@ubuntu:~/Desktop/srp-2.1.2/libsrp$nm-D libsrp.a

t_client.o: nm:t_客户端。o:无符号

请告诉我如何获得所有符号


谢谢libsrp.a文件是一个静态库;共享库的名称类似于
libsrp.so
。有一个答案描述了一种从静态库构建共享库的方法(尽管我自己从来没有这样做过,所以不能保证它有效——祝你好运!)

更新:

使用
nm
-D
参数要求使用动态符号(查看
man-nm
)-在我链接到的问题中,这个家伙在共享库上调用
nm
时使用了
-D
。您的
libsrp.a
是一个静态库,因此要查看符号,只需执行以下操作即可

nm libsrp.a
然而,我不认为你需要看到符号来利用解释如何获得共享库的答案;如果答案是正确的,您只需使用正确的参数调用
gcc
。我想,一旦你有了共享库,你就可以使用
nm
来查看它是否有你想要的符号;在这种情况下,您需要
-D
参数:

nm -D libsrp.so