c++ - 在 Windows 中准备一个将在 Linux 中使用的共享对象
问题描述
我有一个 C# 项目,它从 C++ 代码中对 dll 文件进行 Dllimport。该解决方案针对 .NET Core,并且可执行文件在 Windows 中运行良好。
我尝试使用 linux-x64 作为目标运行时发布解决方案。我将 c++ 代码编译成一个包含在项目文件中的 .so 文件。但是,当我尝试在 linux 中执行程序时出现错误无法加载共享库
如果我遇到file
共享对象,我会得到:
shared_lib.so: PE32+ executable (DLL) (console) x86-64, for MS Windows
所以也许问题是 .so 文件没有为 linux 正确编译?我基本上只是采用相同的编译行并将 shared_lib.dll 更改为 shared_lib.so 但我想这太天真了。特别是我有:
g++ -c -DBUILD_MY_DLL shared_lib.cpp
g++ -shared -o shared_lib.so shared_lib.o -Wl,--out-implib,libshared_lib.a
为了使共享库可用于 linux,是否必须设置一些标志?
解决方案
推荐阅读
- visnetwork - 如何使用 vis-network 渲染家谱
- database - 带有数组参数的 Voltdb 存储过程
- terminal - 为什么我的终端找不到 Cocoapods 命令?
- javascript - Puppeteer - 评估方法中的异步函数引发错误
- express - express api 通过 cors 响应 GET 和 POST 但不是 PUT 和 DELETE 但在本地请求时正确响应
- amazon-web-services - Terragrunt 使用来自其他环境的资源
- apache - 必须输入带有 URL 的端口号才能连接到服务器
- html - 有没有办法固定 bootsrap3 的警报成功类的 css 高度
- plugins - Shiny.SpeechRecognition (Plugin) 与 MvvmCross 和 Xamarin.Forms 的集成
- html - 缩小屏幕尺寸时使搜索栏响应吗?