gpt4 book ai didi

c# - 无法从 C# 应用程序调用简单的自定义 Dll 导入

转载 作者:行者123 更新时间:2023-11-28 05:49:57 28 4
gpt4 key购买 nike

更新

我现在已经运行教程 3 次,结果相同(Visual Studio/Windows 无法将 DLL 识别为有效文件)。这一定是我的环境有问题,因为下面的迈克运行了教程并且运行良好。

我在上次运行时确实在 C++ 项目的解决方案资源管理器中注意到了这一点:

enter image description here

有人知道这样行吗?似乎有很多红色的 parking 标志,对我来说这表明有些不好的事情......


正在关注 this教程,我最终得到了以下内容:

C#

using System.Runtime.InteropServices;

namespace TestImport
{
class Program
{
[DllImport("TestLib.dll")]
public static extern void DisplayHelloFromDLL();

static void Main(string[] args)
{
DisplayHelloFromDLL();
}
}
}

C++

.cpp文件源文件

#include <stdio.h>

extern "C"
{
__declspec(dllexport) void DisplayHelloFromDLL()
{
printf("Hello from DLL !\n");
}
}

在 Visual Studio 中调试时:

An unhandled exception of type 'System.DllNotFoundException' occurred in TestImport.exe

Additional information: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

运行构建的 EXE 时(来自与 Dll 相同的文件夹):

An attempt was made to load a program with an incorrect format.

我在上面的代码中做错了什么吗?我确实在 VS 2015 中完成了所有这些操作,教程要求使用 VS 2010,但是我找不到更新的教程。


当我尝试通过 Project -> Add Reference ... 添加项目作为引用时,我看到了这个错误:

A reference to 'Path\To\MyLib.dll' could not be added. Please make sure 
that the file is accessible, and that it is a valid assembly or COM
component.

这让我认为问题出在源代码或 DLL 配置上。

在运行可执行文件之前,我还尝试构建这两个文件并将它们放在同一文件夹中,但没有任何改进的结果(与运行上面的 EXE 时相同的错误)。


解决方案资源管理器截图:

enter image description here

最佳答案

确保您的 C++ 项目名称和 DllImport 参数相同。此外,如果 dll 文件与您的 C# 项目不在同一目录中,请确保将 dll 添加到您的 Debug/Release 中文件夹。

还有!确保在编译时以相同的 32/64 位模式运行。如果您使用 32 位编译 dll 并尝试在 64 位 C# 程序中使用它,它将无法工作。

关于c# - 无法从 C# 应用程序调用简单的自定义 Dll 导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35462244/

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