DLL 使用问题

阿卜杜勒·拉基布

我对 C# 完全陌生。我正在尝试运行使用 C++ 编写的 DLL 的 C# 代码。DLL文件是,

#include "pch.h"
#include <vector>
#include <iostream>

extern "C" __declspec(dllexport) void __cdecl analysis(double* values, int len)
{
    using namespace std;

    vector<int> ind(values, values + len);
    int n = ind.size();
    for (int i = 0; i < n; i++)
    {
        cout << ind[i] << endl;
    }
}

和 C# 代码,

using System.Runtime.InteropServices;
using System.Collections.Generic;

namespace Test_run
{
    class Program
    {
        [DllImport("Test.dll")]
        public static extern void analysis([MarshalAs(UnmanagedType.LPArray)] double[] values, int len);

        static void Main(string[] args)
        {
            List<double> lst = new List<double>();
            lst.Add(1.2);
            lst.Add(2.3);
            lst.Add(3.4);

            analysis(lst.ToArray(), lst.Count);
        }
    }
}

这两个文件单独编译。但是当我运行该程序时,它会引发异常“无法加载 DLL“Test.dll”或其依赖项之一:找不到指定的模块。(0x8007007E)”。它们都在同一个解决方案中,并且 C# 项目添加了 DLL。

懒鬼

将 DLL 添加到项目中是不够的,但您需要确保 DLL 文件实际上已复制到可执行文件的输出目录中。

如果您在 C# 项目中添加了 DLL 文件,则可以设置“构建操作”=>“无”和“复制到输出目录”=>“如果更新则复制”。这应该确保您的 dll 位于正确的位置。

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章