草庐IT

native_long

全部标签

.net - 如何将 cli::array 从 native 代码转换为 native 数组?

我正在围绕用C++\CLI编写的托管组件编写native包装器。我在托管代码中有以下功能:array^Class::Function();我想从具有以下签名的nativeC++类公开此函数:shared_arrayClass::Function();我已经知道如何从native代码调用托管函数,但我不确定如何安全地将托管数组复制到非托管数组中。gcroot^>managedArray=_managedObject->Function(); 最佳答案 有两种常用的方法:使用native代码执行编码(marshal)处理,这需要使用pi

C++ 将 long、short 和所有 int 转换为 uint32_t、int32_t 等等有帮助吗?

我运行着一个使用C++编码的游戏服务器,其中还有一些ASM和C。我看到有人更新了我运行的同一台服务器,在所有更新中,所有int、unsigned、short和其他所有内容都已更改为int32_t、uint32_t、uint64_t和其他内容。全部改成上面说的有什么好处吗?假设我将所有int更改为int32_t,并将所有unsignedint更改为uint32_t,当然还有所有其他可能更改的内容。我试图阅读和理解是否有任何好处,但我根本没有理解它们的真正含义。所以,是的,问题是:按照我刚才所说的去做有什么好处吗?我使用的编译器是OrwellDev-C++ 最佳

c++ - 在 C++ 标准中哪里说 sizeof(wchar_t) <= sizeof(long) 和 sizeof(bool) <= sizeof(long)?

先生。Stroustrup在他的新书(TCPL第4版)第149页写下了以下内容1我在标准中找不到任何支持上面最后一个不等式的内容。我可以对sizeof(bool)说同样的话.编辑:在3.9.1p5你会发现:Typewchar_tshallhavethesamesize,signedness,andalignmentrequirements(3.11)asoneoftheotherintegraltypes,calleditsunderlyingtype.支持不平等sizeof(wchar_t)但不是sizeof(wchar_t)但是我找不到任何可以证实的东西sizeof(bool)

c++ - (long long)x 与 C++ 中的 (long long)floor(x) 相同吗?

假设我有一个double数据类型,名为“x”的变量。是否有必要将double转换为longlong数据类型与转换为longlongfloor(x)得到相同的结果。 最佳答案 不,这不一样。强制转换截断(向零舍入),floor函数向下舍入。演示:http://ideone.com/k8JuA9#include#includeintmain(){doublex=-1.4;std::cout 关于c++-(longlong)x与C++中的(longlong)floor(x)相同吗?,我们在St

c++ - 如何使用 CppUnitTestFramework 在 Visual Studio native C++ 单元测试中获取 $(ProjectDir) 路径?

我需要能够检索我的单元测试的项目目录路径,以便加载测试所需的一些文件。我不想对其进行硬编码,以防将来解决方案结构和绝对路径发生变化。 最佳答案 好的,我就是这样做的:在我的项目属性->配置->C/C++->预处理器中,我添加了这个预处理器定义UNITTESTPRJ="$(ProjectDir)."然后在我的cpp文件中我做了:#defineSTRINGIFY(x)#x#defineEXPAND(x)STRINGIFY(x)strings=EXPAND(UNITTESTPRJ);s.erase(0,1);//erasethefirst

c# - 以纯 native 模式开始调试 C# 启动项目

我有一个包含C#(托管)和C++(native)项目的MSVC2013解决方案。一个C#项目设置为启动项目。我想通过调试启动这个项目,这通常在devenv中只需按F5即可实现。但是,我想以native-only模式启动调试器(即无托管调试)。我无法通过更改C#项目的设置来实现此行为:它只有一个选项“启用native代码调试”,它允许启用或禁用native调试。我知道的唯一标准方法是在不调试的情况下启动应用程序,然后附加到只选择native调试的进程。有没有办法使这个过程自动化?理想情况下,按下一个按钮就足以启动纯native调试。也许一些扩展可以简化这项任务。P.S.我在混合模式调试中

c++ - 使用 Int 的初始化列表初始化 Long Double 的 vector

假设我有一个简单的类:classPvector{private:std::vectorpoint_list;public:Pvector(std::initializer_listcoords):point_list(coords){}Pvector(std::initializer_listcoords):point_list(coords){}};这将无法编译,因为longdouble模板化的std::vector无法从int类型模板化的初始化列表中初始化自身.然而,这很不方便,因为删除了第二个构造函数后,我无法在我的代码中执行以下操作:Pvectorpiece_movement(

java - 我可以从 native c++ 检测 Java 版本吗

我正在使用nativeC++/MFC编写一个复杂的设置/安装程序应用程序。我非常希望能够检测到已安装的Java版本(如果有的话)。这可能吗?如何实现? 最佳答案 派生一个执行以下命令的进程:java-version。收集输出并解析它。它看起来像下面这样:javaversion"1.5.0_16"Java(TM)2RuntimeEnvironment,StandardEdition(build1.5.0_16-b06-284)JavaHotSpot(TM)ClientVM(build1.5.0_16-133,mixedmode,sha

c++ - 将固定大小内存边界上的 native 代码与 GCC/G++/AS 对齐?

我有一个C函数,其中包含将实现字节码解释器的字节码的所有代码。我想知道是否有一种方法可以在固定大小的边界上对齐内存中的编译代码段,以便我可以直接计算从字节码的值跳转到的地址?有点像数组的工作方式,但我不是从计算的地址读取,而是跳转到它。我知道我必须将执行下一个跳转的代码放在每个“字节码代码”段的末尾,并且我必须使边界大小至少与最大段的大小一样大.如果这甚至可能,我将如何告诉编译器/汇编器(gcc/g++/as)以所述方式对齐? 最佳答案 我意识到这并不是您所要求的,但这是使用GCC实现字节码解释器的标准方法。GCC的“compute

c++ - "integer constant is too large for ‘long’ 求最大质因数时键入"

我正在解决Euler项目3:Description:Theprimefactorsof13195are5,7,13and29.Whatisthelargestprimefactorofthenumber600851475143?这是我生成答案的代码。但是我需要一个整数类型来保存600851475143。当我在Mac上的GCC上编译它时,我得到:integerconstantistoolargefor‘long’type".我预计longlong可以轻松持有这个数字。我也试过让它未签名。为什么我的代码不能保存这么小的数字?我该怎么做才能让它发挥作用?#include#includeusi