问题描述
我是一家通才公司的软件开发人员。我们是一个小团队,我继承了一些已有 20 年历史的软件(我猜是在很多公司)
本软件采用 C/C++ 编码,使用 Visual Studio 2010。其目的是与 USB、以太网和蓝牙设备进行通信。在此之前,我们使用蓝牙加密狗与蓝牙设备进行通信。今天我必须通过蓝牙集成到 PC 中进行通信。为此,我使用了微软提出的例子,用 C# 编码:
https://github.com/microsoft/Windows-universal-samples/tree/master/Samples/BluetoothLE
为了亲自动手,我制作了一个小工具,可以让我与我们的设备进行通信。现在我想将通信部分作为DLL集成到我们的软件中。
所以我正在尝试使用 C/C++(使用 Visual Studio)编码的软件与 C# 中的 DLL 进行通信,使用 .NET Core 3.1 作为框架。
首先,我想从头开始,使用 C# .NET Core 3.1 DLL 中内置的函数在 C++ 中创建一个简单的控制台应用程序。这允许我验证 C++/C# 通信。然而,我已经讨论了一个星期,我开始失去希望......
以下是我找到的一些来源:
https://en.wikipedia.org/wiki/C%2B%2B/CLI https://www.codeproject.com/Questions/476583/callplusc-23plusdllplusorplusclasspluswithinplusc Using C# dll in C++ code https://docs.microsoft.com/fr-fr/dotnet/core/native-interop/expose-components-to-com
但我无法将所有这些付诸实践。
我做的最后一个测试如下:
C# .NET Core 3.1 中的 MyDll:
namespace MyDLL
{
public class Class1
{
public static double add(double a,double b)
{
return a + b;
}
}
}
我的 C++ 项目:
#include "pch.h"
#include "stdafx.h"
using namespace System;
#using "MyDLL.dll"
int main(array<System::String ^> ^args)
{
double x = MyDLL::Class1::add(40.1,1.9);
return 0;
}
我的应用程序和我的 DLL 编译。应用程序很好地找到了 DLL,显然找到我的 DLL 的添加函数没有问题。但是,当我启动我的应用程序时,我在 mcrtexe.cpp,第 247 行中出现此错误:
System.IO.FileNotFoundException: '无法加载文件或程序集' System.Runtime,版本 = 4.2.2.0,文化 = 中性,PublicKeyToken = b03f5f7f11d50a3a '或其依赖项之一。指定的文件可以 找不到。'
我准备以另一种方式进行测试。我想要的只是能够在 C# 中使用我的 DLL,使用 .NET Core 3.1 和我的 C++ 软件。如果您有任何建议,我会倾听。
最好的问候
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)