最近,我正在学习制作一个表单程序Demo.在调用DLL之后,它崩溃并闪回.

代码如下:

`[DllImport("vspdctl.dll", CallingConvention = CallingConvention.StdCall)]
        public static extern bool CreatePair(string comName1, string comName2);

public bool CreatePort(string com1,string com2)
        {
            string s = com1;
            string s2 = com2;
            bool IsCrateture=CreatePair(com1, com2);
            return IsCrateture;
        }`

`private void button1_Click(object sender, EventArgs e)
        {
                bool IsCrateSeccuss = GetVSPD.CreatePort(CreatePortName.Text, CreatePortName2.Text);
                if (IsCrateSeccuss)
                {
                    MessageBox.Show("OK");
                }
                else
                {
                    MessageBox.Show("Fail");
                }`

报告此错误,错误如下:

System.DllNotFoundException:无法加载dll‘vspdctl.dll’:动态链接库(DLL)初始化 routine 失败.

不确定是什么原因造成的

推荐答案

DLL文件必须位于程序的当前目录或系统定义的查询路径中(即:由系统环境变量中的PATH设置的路径)

DllNotFoundException清楚地说明:当找不到在DLL导入中指定的DLL时引发的异常.

try 使用DllImportAttribute直接添加DLL的目录.下面是一个参考例子:How can I specify a [DllImport] path at runtime?

Csharp相关问答推荐

C#中的两个线程之间读写浮点类型

利用.NET 8中的AddStandardResilienceDeliveries和AddStandardHedgingDeliveries实现Resiliency

EF Core判断是否应用了AsSplitQuery()

错误401未授权ASP.NET Core.使用JWT创建身份验证/授权

EF Core 8—应用客户端投影后无法转换集操作

应该使用哪一个?"_counter += 1 OR互锁增量(ref_counter)"""

读取配置文件(mytest. exe. config)

Elasticsearch:当我try 使用c#将嵌套对象添加到filter中时出现问题

通过条件列表删除/更新EF Core 7中的实体的有效方法

为什么总输出就像12.3没有一分一样?

Unity中的刚体2D运动

当前的文化决定了错误的文化

如何使用EF Core和.NET 8来upsert到具有多对多关系的表?

有空容错运算符的对立面吗?

是否可以在Entity Framework Core中使用只读 struct 作为拥有实体?

多个选项卡上的MudForm验证

基于C#方法的EF核心过滤查询(缓冲与流)

为什么我在使用有效令牌的情况下仍未获授权?

无法使用直接URL通过PictureBox.ImageLocation加载图像

无法创建工具窗口(用于VBIDE、VBA的COM加载项扩展)