我们有一个用C++编写的库。为了使它与我们更现代的.NET项目更兼容,我们在另一个.NET项目中包装了这个C++库。当从完整的.NET Framework项目(4.5、4.6等)引用它时,它运行良好。
我正在使用.NET Core 2.1创建一个新应用程序,并尝试引用这个“包裹在.NET C++库中”的库。在第一次尝试时,它失败并显示程序集无法加载。我通过安装.NET Core SDK x86并强制我的应用程序使用x86而不是Any CPU来解决了这个问题。
我没有构建错误,但当我尝试实例化此库中的类时,我会得到以下异常:
<CrtImplementationDetails>.ModuleLoadException: The C++ module failed to load.
---> System.EntryPointNotFoundException: A library name must be specified in a DllImport attribute applied to non-IJW methods.
at _getFiberPtrId()
at <CrtImplementationDetails>.LanguageSupport._Initialize(LanguageSupport* )
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
--- End of inner exception stack trace ---
at <CrtImplementationDetails>.ThrowModuleLoadException(String errorMessage, Exception innerException)
at <CrtImplementationDetails>.LanguageSupport.Initialize(LanguageSupport* )
at .cctor()
.NET Core 2.1是否支持这种情况?