Создано .Dll в C ++ / CLI с использованием стороннего ocx.but при загрузке .DLL с зависимостью, которую я получаю ниже Ошибки:
System.Windows.Markup.XamlParseException: '' Вызов конструкторадля типа 'CommonXFS.Interface.Utility.MainWindow', который соответствует указанным ограничениям связывания, возникла исключительная ситуация. 'Номер строки «5» и позиция «9».InnerException: скрыть код копирования FileNotFoundException: не удалось загрузить файл или сборку 'Interop.NXCameraXLib.1.0, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = null' или одна из ее зависимостей.Система не может найти указанный файл.
Я пробовал оба (x86) и (x64)
My Dll не может загрузить как "Interop.NXCameraXLib.1.0" (файл из OCXдобавлено в качестве ссылки)
Я даже удалил все функции из моего заголовка c ++ и попытался загрузить их в консоль C ++ / CLI, но все еще сталкиваюсь с той же проблемой.
#pragma once
using namespace System;
using namespace NXCameraXLib;
namespace Camera {
public ref class CameraWrapper:public NXCameraXClass
{
public:
CameraWrapper^ m_pCameraWrapper;
public:
//Constructor
CameraWrapper()
{
m_pCameraWrapper = gcnew CameraWrapper();
}
//Destructor
~CameraWrapper()
{
this->!CameraWrapper();
GC::SuppressFinalize(this);
}
//
!CameraWrapper()
{
if (m_pCameraWrapper)
{
delete m_pCameraWrapper;
m_pCameraWrapper = nullptr;
}
}
long Open(long timeout) // Helper function
{
System::Console::WriteLine("OpenSessionSync is called");
return this->OpenSessionSync(timeout);
//instance to be created
}
long close() // Helper function
{
System::Console::WriteLine("CloseSessionSync is called");
return this->CloseSessionSync();
}
long RequestLock(long timeout)
{
System::Console::WriteLine("RequestLock is called");
//this->LockGranted;
long Result;
//EventCardReader^ pE = gcnew EventCardReader;
Result = this->RequestLock(timeout);
//return this->RequestLock(timeout);
if (Result == 0) {
//pE->E();
return Result;
}
else if (Result == -15) {
//pE->pFatalErrorE("FatalError", Result);
return Result;
}
else if (Result == -39 || -54) {
//pE->pLockTimeoutE();
return Result;
}
}
void ReleasingLock()
{
System::Console::WriteLine("ReleaseLock is called");
this->ReleaseLock();
}
// TODO: Add your methods for this class here.
System::String^ CardGetExtraStatus(System::String ^ KeyName)
{
return this->GetExtraStatus(KeyName);
}
};
}
Я исключаюзагрузка dll и Interop, и я должен быть в состоянии вызвать функции OCX / Interop, используя мою DLL.