我认为已经针对较旧版本的Visual Studio提出了此问题,并且没有使用.NET Core 2.1或.NET Standard。
我目前正在Visual Studio 2017中处理.NET Core 2.1应用程序。在我的项目中,我需要使用C ++ / CLI项目中的现有DLL库(动态链接库)。之所以有点棘手,是因为.NET Core 2.1不支持现成的C ++ / CLI。
我的体系结构是:
为了能够在我的C#编码中使用C ++ / CLI中的DLL,我使用 pInvoke 将功能加载到.NET Standard项目中。
我尝试测试:
var test = MyLibHelper.AddNumbers(1, 2);
不幸的是,如果我没有将逻辑放入Hello World C ++ / CLI项目中,我总是会遇到以下错误:
System.EntryPointNotFoundException:'在DLL'MyLib.dll'中找不到名为'AddNumbers'的入口点。'
在我的.NET Standard(2)项目中,我有一个帮助器类来加载DLL方法:
internal static class MyLibHelper
{
[DllImport("MyLib.dll", CallingConvention = CallingConvention.Cdecl)]
internal static extern int AddNumbers(int n1, int n2);
}
在我的C ++ / CLI项目(3)中,我有一个源文件 MyLib.cpp ,其中公开了该功能:
extern "C" __declspec(dllexport) int AddNumbers(int n1, int n2)
{
return n1 + n2;
}
实际上,如果我创建一个没有头文件的Hello World C ++ / CLI项目并使用__declspec(dllexport)和extern“ C”,则此编码可以正常工作。
我的问题是:
我需要使用现有项目,而不是Hello World C ++ / CLI应用程序
非常感谢您!