Я столкнулся с очень странной ситуацией, связанной с загрузкой моего неуправляемого dll c ++ третьей стороны в мой проект на c #.Я добавил неуправляемую DLL в папку моего бина, и в моем файле кода C # я импортировал DLL, используя атрибут импорта Dll.Проблема возникает, когда я просто использую имя dll в атрибуте импорта Dll, когда я указываю полный путь с именем dll в атрибуте импорта dll, я могу загружать и вызывать методы c ++ dll.
Проблема в том, когда я использую dllимя только в атрибуте импорта Dll показывает следующее сообщение об ошибке "Невозможно загрузить DLL 'C: \ Users \ i2v \ Desktop \ NetDEVSDK.dll': указанный модуль не найден. (Исключение из HRESULT: 0x8007007E). "
У меня есть библиотека c ++ в моей папке bin, и мой проект установлен в режиме сборки x86 (потому что c ++ dll - это сборка для x86). Также на моем компьютере установлены все распространяемые файлы времени выполнения c ++.Пожалуйста, помогите мне решить эту проблему.
Мой код -
public class MakeConnection
{
private bool ConnectDevice()
{
bool IsConnected = false;
try
{
Client.CLIENT_OpenSound(10);
ImporRequiredDLL.NETDEV_Init();
NETDEV_DEVICE_INFO_S pstDevInfo = new NETDEV_DEVICE_INFO_S();
IntPtr lpDevHandle = ImporRequiredDLL.NETDEV_Login(this.Camera.Get_Default_IP(), 80, this.Camera.Camera_UserName, this.Camera.Camera_Password, ref pstDevInfo);
if (lpDevHandle == IntPtr.Zero)
{
return IsConnected;
}
DevHandle = lpDevHandle;
IsConnected = true;
}
catch(Exception ex)
{
IsConnected = false;
ExceptionHandler.handleException(ex);
}
return IsConnected;
}
}
public class ImporRequiredDLL
{
[DllImport(@"NetDEVSDK.dll")]
public static extern Int32 NETDEV_StopVoiceCom(IntPtr lpVoiceComHandle);
[DllImport(@"NetDEVSDK.dll")]
public static extern IntPtr NETDEV_StartVoiceCom(IntPtr lpUserID, Int32 dwChannelID, IntPtr cbPlayDataCallBack, IntPtr lpUserData);
[DllImport(@"NetDEVSDK.dll")]
public static extern IntPtr NETDEV_Login(String szDevIP, Int16 wDevPort, String szUserName, String szPassword, ref NETDEV_DEVICE_INFO_S pstDevInfo);
[DllImport(@"NetDEVSDK.dll")]
public static extern Int32 NETDEV_Init();
}
public struct NETDEV_DEVICE_INFO_S
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)]
public byte[] szReserve;
}