gpt4 book ai didi

c# - 如何处理托管 C++ (/CLR) 中 #using 语句中的错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:07:40 25 4
gpt4 key购买 nike

我有一个托管 C++ 项目(使用/CLR 编译),它通过 #using 语句引用 .NET dll,如下所示:

#using <mydotnet.dll>

dll 的存在是在编译时测试的,也是在运行时测试的。如果在运行时未找到 dll,则会抛出未处理的异常:

未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集 'mydotnet,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 或其依赖项之一。该系统找不到指定的文件。 在主要(Int32 argc,SByte** argv) 在 _mainCRTStartup()

如何捕捉这个异常?它似乎在实际代码之前运行,这是有道理的,但我找不到另一种优雅地结束程序的方法。

编辑:我将我的代码缩减为这样,但未能捕捉到任何异常:

#using <mydotnet.dll>

int main(int argc, char* argv[])
{
try
{
}
catch (System::IO::FileNotFoundException^ ex)
{
}
catch (System::Exception ^ex)
{
}
return 0;
}

谢谢,罗伊。

最佳答案

据我所知,CLR DLL 是使用 JIT 加载的,因此只有在第一次使用 DLL 中的代码时才会加载它,这是抛出异常的地方。尝试在第一次使用 DLL 时放置一个 try catch block ,这应该会捕获错误。

#using <mydotnet.dll>

...

try{
// use DLL
} catch (Exception e) {
// Handle file not found here
}

关于c# - 如何处理托管 C++ (/CLR) 中 #using 语句中的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com