无法使用/OPT:NOREF在.NET中加载C++DLL

Unable to load C++ DLL in .NET with /OPT:NOREF

本文关键字:NET 加载 C++DLL NOREF OPT      更新时间:2023-10-16

我试图在VB.NET中调用C++本机的一些函数,但遇到了一个奇怪的问题。如果我在发布模式下编译C++DLL,它会工作,如果我在调试模式下编译它,它会抛出一个错误,比如:

无法加载DLL"DllName.DLL":参数不正确。(HRESULT异常:0x80070057(E_INVALIDARG))

一开始我认为调试dll中引用的MSVCR100D.dll可能有问题,但事实并非如此。

相反,我发现如果我使用选项/OPT:NOREF编译C++DLL,它就不起作用;如果我改为使用/OPT:REF编译它,它就可以工作了。

我现在有点迷路了,你知道这种情况下会有什么问题吗?

我认为你必须让dll在同一个模型中失败。