草庐IT

托管所

全部标签

c# - 加快构建时间的方法? (C#/非托管 C++)

我目前正在开发的遗留应用程序需要大约2小时的时间来构建。该项目有大约170个项目,其中150个左右是非托管C++,另外30个是C#.Net2.0。对于缩短此类项目的构建时间的方法有哪些建议? 最佳答案 专注于C++项目-它们几乎肯定是构建过程中耗费最多时间的项目。关于缩短C++构建时间的一些技巧:确保您只包含C++项目中需要的header!尽可能在header中使用前向声明,而不是包含其他header尽可能使用/MP开关并行构建有效地使用抽象尽量少使用内联函数,因为这些函数在编译时成本更高获得正确的依赖关系,这样你就不会更频繁地构建

c++ - 在 .NET 中捕获非托管 dll 异常

我正在使用一个带有抛出std::exception函数的非托管DLL。我正在使用.NETDLL包装器,因此可以分发它以在.NET程序中使用。我希望能够从native异常中捕获消息,但我得到的只是System.Runtime.InteropServices.SEHException("Externalcomponenthasthrownanexception.")有什么方法可以传播异常详细信息吗?也许我应该从nativeDLL导出自定义异常?我该怎么做?谢谢nativeDLL:__declspec(dllexport)void__stdcallW32DLLFunc(intparam){i

c# - 如何将 IntPtr 传递给非托管 C++ CLR 托管代码的方法?

我正在使用本教程作为我在32位非托管DLL中的代码的基础https://code.msdn.microsoft.com/CppHostCLR-e6581ee0假设我想调用TestIntPtrpublicclassIntPtrTester{publicstaticvoidTestIntPtr(IntPtrp){MessageBox.Show("TestIntPtrMethodwasCalled");}publicstaticvoidTestInt(intp){MessageBox.Show("TestIntMethodwasCalled");}}如果在C++端它代表句柄,我如何传递Int

c++ - 在设计和体系结构上开发像.NET Framework 类库的非托管C++ 库是否浪费时间?

有很多C++类库,要么是开源的,要么是商业的,比如MFC、ATL、SmartWin++,QT。但它们都没有.NET框架类库的设计、体系结构和纯度。实现类似于.NET框架类库并为开发人员提供广泛功能的C++库的想法如何,当然该库将是非托管的,并将包装win32API和COM 最佳答案 有趣的问题。但我认为为非托管C++重新创建.NETBCL(基类库)要么是浪费时间,要么不是最佳选择。这是为什么?C++语言与.NET语言有很大不同。这意味着,如果您要为C++重写BCL,您将最佳地尝试充分利用C++。这可能会导致完全不同的框架设计:IDi

c# - 在托管代码(C++、C、C++/CLI、C#)中使用非托管代码时处理错误

我使用的是编写糟糕的第3方(C/C++)Api。我从托管代码(C++/CLI)中使用它。有时会出现“访问冲突错误”。这使整个应用程序崩溃。我知道我无法处理这些错误[如果指针访问非法内存位置等,我该怎么办]。但我不希望我的应用程序整体崩溃。至少如果存在真正的问题,我的应用程序应该优雅地说“好的。我不能做我的工作。再见。”:-)然后它至少执行一些替代方案并最终关闭自己。但似乎没有办法捕获(可能是错误的术语,正确的词可能是被告知)访问冲突和类似的错误。有没有办法被告知这些错误。所以我可以执行我的替代方案。PS:标准的异常处理并不能解决这个问题。#include"stdafx.h"#inclu

c++ - 具有相同名称的非托管 C++ DLL 在同一进程中共存

使用VisualStudioc++V10,我试图弄清楚如何构建DLL并解决DLL命名冲突。这是详细信息。公司S运送了一个名为M.EXE的产品.假设M.EXE安装在\S\BIN\M.EXE.公司S静态链接到名为U.DLL的DLL,安装在\S\BIN\U.DLL中.U.DLL包含开源代码,并使用VisualC++编译器选项构建/Zc:wchar_t-,它不会将wchar识别为native类型。C公司发布了一个名为O.DLL的DLL,并发布此DLL的API,并为O.DLL提供一个导入库.假设O.DLL安装在\C\BIN\O.DLL.O.DLL静态链接到名为U.DLL的DLL,安装在\C\BI

c# - 非托管 C# 与 C++

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭9年前。Improvethisquestion我想成为一名游戏开发者,我更喜欢使用C#。当我问到用C#编写实时应用程序的缺点是什么时,我得到了重要的1点回复:垃圾收集及其对性能的不可预测的影响。我的反问是,非托管C#怎么样?它与C++相比(性能方面)如何?它是开发软件的有效选择吗?我对非托管C#的了解不多,我看到的所有“非托管C#与C++”问题都没有得到回答或回答不准确。这些问题不在堆栈溢出上。编辑:我认为非托管C#是“不安全代码”。

c# - 用于检测 C# 和非托管 C++ 应用程序内存泄漏的工具

我们有一个使用C#.NETFramework2.0开发的应用程序,它与COM组件(使用C++非托管代码开发)进行交互。有时应用程序会抛出内存不足异常(很难重现)。我们希望有一个工具来找出我们是否有任何内存泄漏,并确定内存异常的根本原因。什么工具最适合这个?一个理想的工具应该能够附加到用户机器上正在运行的进程来进行分析。我们已经尝试过.NET内存分析器,但它只能附加到.NETFramework4.0运行进程。我们还使用了MemoryValidator(C++内存泄漏检测器);然而,这个工具在附加到正在运行的进程时没有给我们足够的提示。 最佳答案

c++ - 对于托管和非托管 C++ 的混合,最好的单元测试工具是什么?

我将开始为混合了托管和非托管C++的代码库实现一些单元测试。NUnit可以用非托管代码破解它吗?有更好的选择吗? 最佳答案 可以使用NUnit来测试非托管代码,例如://Tests.h#pragmaonce#includeusingnamespaceSystem;usingnamespaceNUnit::Framework;namespaceTests{[TestFixture]publicrefclassUnitTest{public:UnitTest(void){}[Test]voidTestCos(){Assert::AreE

c++ - 使指向特定托管对象的所有共享指针无效

在C++11中,是否有可能让一个对象由多个std::shared_ptr管理。我想通过一个std::shared_ptr删除对象并使其他shared_ptr无效(设置为空或null),这可能吗?如果不是,通知所有其他“引用”(自由使用该词)该对象不再有效的最佳方法是什么? 最佳答案 为此,另一个shared_ptrs必须替换为weak_ptr秒。shared_ptr执行删除操作的是在这种情况下实际管理对象生命周期的操作。此时值得弄清楚您是否真的需要共享所有权语义。一般来说,如果您发现自己尝试做一些界面不允许您做的事情,这表明您需要具