求助C#调用C++dll异常解决

本文介绍了一个使用C#动态调用C++编写的DLL(libgc.dll)时遇到的问题,具体表现为运行时出现DLLNotFoundException异常,提示无法加载DLL。文章提供了C#测试代码示例,并寻求解决此问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

请大家帮忙的。

C++编写的dll(libgc.dll)放在当前的目录的debug目录下。

一下是我用C#写的动态调用C++dll测试方法:

ing System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
//using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace Dialogic01
{
    public partial class test : Form
    {
        public test()
        {
            InitializeComponent();
        }
        [DllImport("libgc.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int gc_Start(IntPtr startp);
        [DllImport("libgc.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int gc_Close(int chdev);
        [DllImport("libgc.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int gc_OpenEx(ref int linedevp, string devicename, int mode, [MarshalAs(UnmanagedType.AsAny)] Object usrattr);
        [DllImport("libgc.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
        public static extern int gc_GetResourceH(int linedevp, ref int resourcehp, int resourcetype);
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
               gc_Close(1);
            }catch( Exception ex)
            {
             MessageBox.Show(ex.Message);
             return;
            }
           
        }
      
    }
}


运行时:点击测试按钮出现异常:

[System.DllNotFoundException] = {"无法加载 DLL“libgc.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。"}

我在网上查阅了很多资料都未解决,请教高手指点指点的。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值