gpt4 book ai didi

c# - 使用 Visual Studio 构建 C++ DLL - Linux 上的 PInvoke

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:29 25 4
gpt4 key购买 nike

这就是我想要实现的目标:在 Visual Studio 上构建 native C++ DLL 库,并通过 C# 应用程序中的 PInvoke 在 Ubuntu Linux\Mono 上调用它的方法。简化代码:

[DllImport("MyLib")]
static extern int MyFunction();

static void Main(string[] args)
{
int result = MyFunction();
}

在 Windows 上,它就像一个魅力。我在单声道上运行此示例应用程序,但出现错误:DllNotFoundException。当我启用单声道调试 (MONO_LOG_LEVEL="debug"mono MyApp.exe) 时,我可以看到找到了这个 DLL,但由于错误而无法加载:“无效的 ELF header ”。我想 DLL 必须用一些特殊的标志编译,所以 linux 可以识别它。如何做到这一点?

最佳答案

随 Visual Studio 提供的 C++ 编译器面向 Windows。您正在尝试在 Linux 上执行代码,因此您需要使用针对 Linux 的编译器来编译您的代码。您根本无法在 Linux 上以 native 方式执行 Windows DLL。

您的解决方案是将源代码带到 Linux C++ 编译器和 Linux 共享对象库编译器。

关于c# - 使用 Visual Studio 构建 C++ DLL - Linux 上的 PInvoke,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21244268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com