标签: c++-cli

C++ CLI是C++的超集吗?

C++ CLI编译器是否能够在不进行修改的情况下编译一些大型C++类?

C++ CLI是C++的超集吗?

c++ clr c++-cli superset

13
推荐指数
2
解决办法
1039
查看次数

C++/CLI可以产生吗?

在C#中,我可以使用yield关键字来实现生成器,即:

int GenInt()
{
    for(int i = 0; i < 5; i++)
        yield return i;
}
Run Code Online (Sandbox Code Playgroud)

然后,多次调用该函数将返回0到4.

可以在C++/CLI中完成同样的事情吗?没有yield关键字,所以我的直觉反应是没有,这很糟糕,但你能做什么?

.net c++-cli

12
推荐指数
1
解决办法
4286
查看次数

如何在C++/CLI中检查对象的类型?

有没有一种简单的方法来检查对象的类型?我需要以下几点:

MyObject^ mo = gcnew MyObject();
Object^ o = mo;

if( o->GetType() == MyObject )
{
    // Do somethine with the object
}
else
{
    // Try something else
}
Run Code Online (Sandbox Code Playgroud)

目前我正在使用嵌套的try-catch块来寻找System::InvalidCastException那些感觉很丑但有效的s.我打算尝试编写类似上面代码的内容,看看它是否更快/更慢/可读但是无法解决语法甚至尝试.

如果有人想知道,这来自于让一个队列进入一个提供数据工作的线程.有时我想更改设置并通过数据队列传递它们是一种简单的方法.

types c++-cli detection

12
推荐指数
2
解决办法
2万
查看次数

C++和C#互操作性:P/Invoke与C++/CLI

在找到C#和C++之间的互操作方法的过程中,我发现这篇文章解释了P/Invoke.

我读了很多文章声称C++/CLI不是精确的C++,需要一些努力来修改原始的C++代码.

我想问一下,当我想要从C#对象中使用一些C++对象(代码/数据)时,最佳方法是什么.

  • 看起来为了使用P/Invoke,我应该提供C风格的API.这是真的吗?我的意思是,有没有办法将C++对象导出到C#,如带有P/Invoke的SWIG?或者,我是否必须为此目的使用SWIG?
  • 将C++更改为C++/CLI有多难?与将C++重写为C#相比,是否值得尝试?C++设计得很好,所以将它实现到C#并不是很重要.
  • (关于主题问题)是否有相反的方式?我的意思是,如果我想使用C++中的C#代码,有没有办法这样做?

c# c++ pinvoke interop c++-cli

12
推荐指数
2
解决办法
5515
查看次数

提升互斥C++/CLI问题

我正在使用64位的Visual Studio 2008 C#进行开发,我想使用一个使用boost的库.所以我用C++/CLI编写了一个包装器.我设法针对我遇到的错误

#include <boost/thread/mutex.hpp>.
Run Code Online (Sandbox Code Playgroud)

如果我在我的C++/CLI包装器中包含任何文件本身包含<boost/thread/mutex.hpp>或者如果我将它直接包含在包装器中,我会得到一个"System.AccessViolationException""试图读取或写入受保护的内存.这通常表明其他内存是腐败."

我非常小心地为64bit构建一切,所以我怀疑问题是存在的.当我在"普通"C++中使用64位的相同库时,一切正常.我发现了几个帖子,人们似乎在使用boost线程时遇到了类似的问题,但我找不到任何解决方案.有没有人有想法?

64-bit multithreading boost mutex c++-cli

12
推荐指数
1
解决办法
4122
查看次数

如何从我的C++/CLI代码进入非托管C++库

我的解决方案中有以下三个项目:1.C#库2. C++/CLI托管代码3. C++非托管代码

我在我的C#项目中检查了"启用非托管代码调试",并在Debug/Win32中构建了两个C++项目.但是,我无法进入非托管代码 - 当我在调用任何非托管方法的F11时,它会显示一些随机/错误代码然后退出.

因为我的单元测试通过了,所以我知道我的非托管代码确实执行了.

我错过了什么?

c# c++ unmanaged c++-cli visual-studio-2008

12
推荐指数
1
解决办法
5879
查看次数

C++/CLI枚举没有在C#中显示,参考C++/CLI项目

我无法获得C++/CLI枚举的内容以显示在C#项目中.

我可以看到我写的一个类,甚至看到枚举,但我看不到枚举值.所以我不能在C#端使用这个东西.

无法显示C++/CLI枚举内容的任何原因.

我的C++/CLI项目被编译为混合以重用C++库.

我正在使用Visual Studio 2005.

c# enums c++-cli visual-studio

12
推荐指数
1
解决办法
5574
查看次数

在同一解决方案中在C#项目和C++项目之间进行交互

我有一个用C++/cli编写的Windows窗体应用程序.我想用一些新的表单扩展这个应用程序,我想在一个单独的项目中用C#创建它们.

是否可以简单地将C#项目添加到具有C++项目的解决方案中,并且两者将进行交互?通过交互,我的意思是,例如,点击c#项目中编写的表单的按钮将能够调用c ++项目中的方法.或许以不同的方式询问,C#项目中的对象是否可以引用c ++项目中的对象?如果是这样,你知道一个示例代码让我开始吗?

谢谢.

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

12
推荐指数
2
解决办法
1万
查看次数

异常HRESULT:0x800700C1执行c#应用程序时使用boost引用本机c ++库

我正在运行一个引用C++\CLI包装器项目的C#应用​​程序,该项目依次引用依赖于Boost 1.47库的本机c ++项目(链接到表单文件... vc100-mt-gd-1_47.lib)

所有库都是静态链接的,一切都编译得很好.执行C#应用程序会导致异常:"...不是有效的Win32应用程序.(HRESULT异常:0x800700C1)." 声称在某处遗漏了一些依赖.

C#应用程序配置为x86平台,而所有其他项目都是Win32,包括boost的二进制文件.

编辑:在添加使用Boost库之前,它的DID工作

我该如何追踪问题?

boost c++-cli visual-studio-2010

12
推荐指数
1
解决办法
7812
查看次数

c ++/cli caret ^ Vs. 指针*?

我已经在C和C#中编程了很长时间,我觉得转向C++会很顺利......
无论如何,我看过使用插入符号,但我不明白它的含义.

有什么不同:

std::string *st1;
Run Code Online (Sandbox Code Playgroud)

String::string ^st2;
Run Code Online (Sandbox Code Playgroud)

谢谢!

pointers c++-cli

12
推荐指数
1
解决办法
6253
查看次数