标签: c++-cli

为什么C++需要语言修改才能"管理"?

为什么不能在编译器编写的管理需要进行什么管理中的C++代码(即,使其"CLR兼容")?

也许有一些妥协,比如在某些情况下禁止无效指针等等.但所有这些额外的关键词等等.这些新增内容必须解决的问题是什么?

我对某些方面以及可能难以解决的问题有所了解,但我们将非常感谢一个很好的解释!

.net c++ clr c++-cli managed-code

9
推荐指数
1
解决办法
1589
查看次数

C++/CLI:优于C#的优势

托管C++/CLI与C#相比有什么主要优势吗?绝对不是我想的语法,因为C++/CLI中的以下代码真的很难看,

C++/CLI代码:

[Out]List<SomeObject^>^% someVariable
Run Code Online (Sandbox Code Playgroud)

比较上面的C#代码:

out List<SomeObject> someVariable
Run Code Online (Sandbox Code Playgroud)

出于好奇,与上面相比,C++/CLI中的语法更加丑陋.

c# c++-cli declaration

9
推荐指数
4
解决办法
3085
查看次数

使用System :: DateTime参数调用C++/CLI方法需要'ValueType'作为参数?

我试图用C#调用用C++/CLI编写的方法.C++/CLI代码用于更新TIMESTAMPOracle数据库中的列,给定记录ID和System::DateTimeOracle TIMESTAMP类型的.NET兼容数据类型的对象.

我调用的方法有以下原型:

bool ChangeJobUpdateDate (int jobIdIn, System::DateTime^ updateDateIn)
Run Code Online (Sandbox Code Playgroud)

我在我做的测试项目中添加了对这个DLL项目的引用; 我正在用C#编写测试.但是,当我尝试从C#单元测试项目调用此方法时,该函数似乎具有以下方法声明(通过intellisense):

bool ChangeJobUpdateDate (int jobIdIn, ValueType updateDateIn)
Run Code Online (Sandbox Code Playgroud)

我当然不熟悉C++/CLI,所以有什么我想念的吗?

c# datetime types c++-cli

9
推荐指数
1
解决办法
3666
查看次数

C++/CLI:SIGFPE,_control87,_fpreset,将古老的非托管Watcom C应用程序移植到.NET

我有一个数千行的应用程序,依赖于SIGFPE(由传递给signal()的函数指针处理)来改变状态,并在某些浮点条件发生时使代码正确运行.但是,在托管模式下的C++/CLI下,_control87会生成在用C编写的静态库中执行的System.ArithmeticException.不支持_fpreset和_control87.

如何在C++/CLI应用程序中使用经典的非托管SIGFPE操作?在我的应用程序中发生浮点内容的位置数量可能是巨大的,我不完全理解其他程序员多年前编写的所有数值方法.

我希望老式异常处理能够将浮点除法用于零,而不是INF值.平台调用样式不起作用,#pragma managed(off)也不起作用.

我有什么选择?

floating-point c++-cli dllimport sigfpe

9
推荐指数
1
解决办法
555
查看次数

从C++/CLI调用C++代码时,如何执行编组操作?

根据这个问题,可以使用C++/CLI 无缝地组合托管代码和非托管代码.我不太明白 - 不管怎么说管理和非托管之间都不应该有编组?

例如,我有InnerLibrary,它被编译为带有头文件的本机C++ .dll和调用InnerLibrary代码的C++/CLI OuterLibrary.会不会有编组?谁将实施它,它的成本是多少?

.net mixed-mode c++-cli marshalling

9
推荐指数
2
解决办法
1639
查看次数

错误MSB3171:生成清单时出现问题

C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets(2341,9): error MSB3171: Problem generating manifest. Could not load file or assembly '...CppCli.dll.manifest' or one of its dependencies. An attempt was made to load a program with an incorrect format.

我在编译CSharp项目时收到此错误,其中:

CSharp项目

一个VS2008 C#项目,它添加了CppCli项目作为参考

Output type, Windows application
Platform target, Any CPU
I've also tried with Platform target, x86
Run Code Online (Sandbox Code Playgroud)

CppCli项目

VS2008 C++/CLI项目,链接到外部C++静态库

Targeted framework .NET Framework 3.5
Configuration type, Dynamic Library (.dll)
Configuration properties, Common Language Runtime support, /clr
Manifest tool, Embed manifest, No
Run Code Online (Sandbox Code Playgroud)

安装的软件(据我所知VS2008 + SP1和.NET3.5 + SP1) …

c# c++-cli manifest visual-studio-2010 visual-studio-2008

9
推荐指数
1
解决办法
4653
查看次数

混合模式C++/CLI DLL在退出时抛出异常

我遇到了我创建的C++/CLI混合模式DLL的问题.卸载时抛出异常,因为使用它的.NET应用程序退出.在DLL_PROCESS_DETACH执行之后,DLL使用自动注册的atexit() / __onexit()函数执行运行时清理并抛出以下异常:

Unhandled exception at 0x752bb9bc (KernelBase.dll) in psstestm.exe: 
0xC0020001: The string binding is invalid.
Run Code Online (Sandbox Code Playgroud)

我已经将问题跟踪到一个atexit()由静态boost异常对象注册的调用get_static_exception_object().

    function_to_call    0x0f560410 _t2m@???__Fep@?1???$get_static_exception_object@Ubad_exception_@exception_detail@boost@@@exception_detail@boost@@YA?AVexception_ptr@1@XZ@YAXXZ@?A0x0a546e27@@YAXXZ   void (void)*
Run Code Online (Sandbox Code Playgroud)

我使用boost_1_47大部分静态链接,除了boost :: thread,动态链接以避免加载器锁.我也尝试动态链接所有的助手,这没有帮助.所有的升压包括都被#pragma unmanaged块包围.

我希望有人有类似的问题或知道解决方案?

谢谢,马克

这是异常发生之前的调用堆栈:

psscorem.dll!_CRT_INIT(void * hDllHandle=0x0f4b0000, unsigned long dwReason=0, void * lpreserved=0x00000001)  Line 413  C
psscorem.dll!__DllMainCRTStartup(void * hDllHandle=0x0f4b0000, unsigned long dwReason=0, void * lpreserved=0x00000001)  Line 526 + 0x11 bytes   C
psscorem.dll!_DllMainCRTStartup(void * hDllHandle=0x0f4b0000, unsigned long dwReason=0, void * lpreserved=0x00000001)  Line 476 + 0x11 bytes …
Run Code Online (Sandbox Code Playgroud)

dll mixed-mode boost c++-cli atexit

9
推荐指数
1
解决办法
2781
查看次数

如何在Visual Studio 2010下针对C++/CLI定位.NET 4 Client Profile?

本文介绍如何在VS2008下为.NET 3.5选择它.
如何在VS2010下为C++/CLI选择.NET 4.0 Client配置文件?

.net c++-cli

9
推荐指数
1
解决办法
1767
查看次数

为什么在逐步使用C#代码时,Visual Studio 2010可以在C++模式下进行漂亮打印?

我遇到了一个奇怪的问题.我的PC上有最新的更新.我的操作系统是Windows 7.任何人都可以帮我解决这个问题吗?我试过重置Visual Studio.

这里有一个确切的问题,以便更容易看到:

关于这个问题的特写

.net c# c++-cli visual-studio-2010 visual-studio

9
推荐指数
1
解决办法
1427
查看次数

C++/CLI:Console :: WriteLine()还是cout?

我要回到学校,我们必须参加C++课程.我熟悉这种语言,但有一些我从未听说过的事情......

一般来说,我的老师说普通的C++是"不安全的".它生成"不安全的代码"(无论这意味着什么).这就是为什么我们必须使用C++/CLI来制作"安全"的代码.

现在...... CLI不仅仅是Microsoft .NET扩展吗?

他也告诉我们用Console::WriteLine()而不是cout.既然Console::WriteLine()"安全"又cout"不安全".

这一切对我来说都很奇怪......任何人都可以澄清一下吗?

谢谢!

c++-cli

9
推荐指数
1
解决办法
5957
查看次数