小编Han*_*ant的帖子

pin_ptr无法在非托管类中声明托管对象

我有非托管课程.在那个类中,我有一个托管对象.现在我想在我的unmanged类中为托管对象创建一个pin_ptr.当我尝试这样做时,我收到此错误"错误C3265:无法pinnedProject在非托管中声明托管_ ProjectWrapper如何实现此目的?

这是代码.

class ProjectWrapper
{
private:
    msclr::auto_gcroot<Project^> _project; // --> This works fine,
    pin_ptr<msclr::auto_gcroot<Project^>> _pinnedProject; // ---> This gives error
public:
    ProjectWrapper()
    {
        _project = gcnew Project();
        pin_ptr<msclr::auto_gcroot<Project^>> anotherPinnedProject = &_project; // --> This one works,
        //_pinnedProject = _project; // --> I want to use this instead of above live,
    }
}
Run Code Online (Sandbox Code Playgroud)

c# interop c++-cli

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

如何将System :: String转换为const char*?

如何将'String ^'转换为'const char*'?

     String^ cr = ("netsh wlan set hostednetwork mode=allow ssid=" + this->txtSSID->Text + " key=" + this->txtPASS->Text);
system(cr);
Run Code Online (Sandbox Code Playgroud)

错误:

1   IntelliSense: argument of type "System::String ^" is incompatible with parameter of type "const char *"
Run Code Online (Sandbox Code Playgroud)

c++-cli

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

BITWISE AND操作如何在C程序中占用比ARITHMETIC ADDITION操作更多的CPU时钟?

我想测试按位运算是否真的比算术运算更快.我以为他们是.

我写了一个小的C程序来测试这个假设,令我惊讶的是,加法平均比按位AND运算少.这对我来说是令人惊讶的,我无法理解为什么会这样.

根据我所知的附加,来自较低有效位的进位应该被携带到下一位,因为结果也取决于进位.对我来说逻辑运算符比加法更慢是没有意义的.

我的鳕鱼在下面:

#include<stdio.h>
#include<time.h>

int main() 
{
   int x=10;
   int y=25;
   int z=x+y;
   printf("Sum of x+y = %i", z);
   time_t start = clock();
   for(int i=0;i<100000;i++)z=x+y;
   time_t stop = clock();

   printf("\n\nArithmetic instructions take: %d",stop-start);
   start = clock();
   for(int i=0;i<100000;i++)z=x&y;
   stop = clock();

   printf("\n\nLogic instructions take: %d",stop-start);
}
Run Code Online (Sandbox Code Playgroud)

一些结果:

Arithmetic instructions take: 327
Logic instructions take: 360

Arithmetic instructions take: 271
Logic instructions take: 271

Arithmetic instructions take: 287
Logic instructions take: 294

Arithmetic instructions take: 279
Logic instructions take: …
Run Code Online (Sandbox Code Playgroud)

c assembly instructions logical-operators integer-arithmetic

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

将BigInteger向左移动后出现意外值

我有一个字符串,我通过解析转换为BigInteger然后将其向左移3位并再次转换为字符串.问题是它总是在实际值之前输出额外的位.例如:

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
        Dim positiveString As String = "C0020ACB1086886D8C2E4D2DEDC726A6"
        Dim posBigInt As BigInteger = 0
        posBigInt = BigInteger.Parse(positiveString, System.Globalization.NumberStyles.AllowHexSpecifier)
        posBigInt = posBigInt << Hex(3)
        RichTextBox1.Text = posBigInt.ToString("X")
    End Sub
Run Code Online (Sandbox Code Playgroud)
  • 给我:E001056588434436C6172696F6E393530 - 哪个不对
  • 前4个字节应该是:00105658(我无法检查整个数组,因为我不知道另一种方法,除了BigInteger,用UInt64检查)

价值之前的"E"是我无法解释的.我尝试了不同的十六进制字符串但它总是产生那些额外的位 我究竟做错了什么?

vb.net biginteger bit-shift bit

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

加速位图灰度转换,OpenMP是C#中的一个选项吗?

请帮助我使用openmp使这个代码并行这个代码是在按钮点击运行,文本框是128

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace IMG
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    string path = "";
    public void openimage()
    {
        if (openFileDialog1.ShowDialog() == DialogResult.OK)
        {
            path = openFileDialog1.FileName;
            Graphics g = this.CreateGraphics();
            g.Clear(this.BackColor);
            Bitmap curBitmap = new Bitmap(path);
            g.DrawImage(curBitmap, 200, 220, 200, 200);
        }
    }
    Bitmap bm;
    Bitmap gs;
    private void button1_Click(object sender, EventArgs e)
    {
        if (path == "") …
Run Code Online (Sandbox Code Playgroud)

c# parallel-processing image-processing openmp

0
推荐指数
1
解决办法
3305
查看次数

c ++使用winmain()

我刚开始用c ++学习windows编程.我有这个疯狂的形象,win32编程基于调用windows函数并向它们发送参数.就像,当你想创建窗口时,你调用一些处理Windows GUI的win32函数并说"嗨,请创建我的新窗口,100 x 100 px,带两个按钮",并且GUI功能说"嗨,没问题"当发生某些事情时,如用户点击一个按钮,我将更改位于此位置的此变量xy".

所以,我认为它与控制台编程非常相似.但是第一条指令让我感到惊讶.我一直认为每个程序首先执行main()函数.因此,当我启动应用程序时,Windows会在堆栈顶部存储一些参数并运行该应用程序.所以我假设初始化main()只是一种c ++方式告诉编译器第一条指令应该在哪里.

但是在win32编程中,有一个名为WinMain()的函数首先启动.所以我有点困惑.我认为规则是编译器必须有main()开始,main只是定义它的起始位置,就像一些起始点标识符.

那么,请问为什么WinMain()函数而不是main()?当我认为C++编程与汇编程序一样合理时,它又让我感到困惑.

c++ winapi winmain

0
推荐指数
1
解决办法
3619
查看次数

通过psapi.dll调用GetModuleFileNameEx不起作用,但为什么?

我正在使用没有完整功能的MinGW.例如.它没有wchar_t流支持.我已经设法通过编写一组迷你操纵器(下面的代码中的wcusT())来解决这个问题.但是我发现我再次遇到了GetModuleFileNameEx.我无法原生运行GetModuleFileNameEx()此函数已定义<psapi.h>,但似乎没有任何内容可以链接到.这是我的第一个问题:可以/确实/是MinGW能够运行GetModuleFileNameEx吗?我需要做什么?我错过了一些简单的事吗?作为一种解决方法,我试图通过调用它在Windows system32文件夹中的dll(psapi.dll)来间接运行它......但是出了点问题.我还有另一个禁区.我对以下代码的任何评论表示感谢..谢谢

int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow)
{ /// typedef and load a dll function
  /// ===============================
  typedef DWORD (__stdcall *foo)(HANDLE, HMODULE, LPTSTR, DWORD);
  LPTSTR  ptcPSAPI_DLL = _T("C:\\WINDOWS\\system32\\psapi.dll");
  HMODULE   hPSAPI_DLL = LoadLibrary(ptcPSAPI_DLL);
  if( !hPSAPI_DLL ) 
  { std::cout<<"ERROR: Failed to load "<<wcusT(ptcPSAPI_DLL)<<std::endl;
    return 1;
  }
  foo GetModFnEx=(foo)GetProcAddress(hPSAPI_DLL,
                  #ifdef  UNICODE
                         "GetModuleFileNameExW");
                  #else
                         "GetModuleFileNameExA");
                  #endif

  /// call the dll library function
  /// =============================
  HWND   hWndNPP = FindWindow(_T("Notepad++"),NULL); // the window calass name
  TCHAR  ytcMFqFn[FILENAME_MAX]; // …
Run Code Online (Sandbox Code Playgroud)

c++ dll

0
推荐指数
1
解决办法
2125
查看次数

设计高效的用户交互式事件日志,这样我就不会超过10000个用户对象限制.

我有一个问题:在我的应用程序得到一些事件相关的信息,所以对于事件X我应该得到一个表格窗口,我做一些事情(输入一些文字,然后点击一个按钮)

我的问题是我的应用程序有10000用户对象的限制(如为所有的C#应用​​程序),和我现有的代码已经有3000所占用的用户对象(使叶片围绕7000用户对象免费).我从200个客户端收到有关每个客户端上发生的事情的信息.

当我从客户端收到有关事件的信息时,我想以某种方式在事件日志窗口中将其显示为标签,当我点击标签时,应弹出特定的窗体窗口(我之前提到过),以便我可以输入一些文字,然后点击一个按钮.

我需要能够有效地显示这个事件日志窗口(因为我可以从每个客户端接收多达1000个事件,如果此日志中的每个标签占用1个对象,这意味着每个客户端将有1000个对象(最大,但可能) )所以我会超过我10000的限制).

我怎样才能有效地做些什么呢?

目前,对于每个事件,我都会启动一个表单窗口,在其中我输入文本并单击按钮但这样效率不高(因为我的表单窗口占用了3个用户对象,如果我有最多3*200个客户端*1000个用户对象我超过到目前为止7000我的限制).

c# user-object

0
推荐指数
1
解决办法
240
查看次数

.Net Framework编程的语言

是否建议使用C++/CLI作为新的.Net应用程序的主要语言?应用程序将不使用本机代码(纯CLI).这个问题的原因是,我想使用框架而不是倾向于使用像C#或VB这样的新语言.

斯特凡

.net c++-cli

0
推荐指数
2
解决办法
163
查看次数

转义字符 - 什么是

希望得到以下示例的功能答案和实际示例:

string str =" my \v question ";
Run Code Online (Sandbox Code Playgroud)

有了这些逃脱迹象:

  • \0

  • \r

  • \f

c# c++ c#-3.0 c#-4.0

0
推荐指数
1
解决办法
175
查看次数