Tag: C#的

TraceRoute和C#中的Ping

有没有人有C#代码方便做ping和跟踪路由到目标计算机? 我正在寻找一个纯粹的代码解决scheme,而不是我现在正在做什么,这是调用ping.exe和tracert.exe程序并parsing输出。 我想要更强大的东西。

找不到libstdc ++ – 6.dll

我一直在做一个项目(一个游戏具体),我觉得我应该从不同的图书馆重新开始。 所以当我这样做时,我重新安装了Code :: Blocks并设置了我的新库和包括。 但截至目前我有一个问题开始你(我的新项目来testing,如果所有的包括工作。 这个问题是: libstdc++-6.dll was not found. 起初,我想知道我是否可以在网上find这个文件,但是找不到它(或者至less是我search过的许多地方)。不久之后,我尝试装载我的旧项目,同样的问题再次发生(奇怪的……)我在想也许是我的编译器,所以我使用了我的旧编译器,它做了同样的事情! 在这一刻,我把这个问题解决了,明天(今天是这样) 所以我的问题是:如果有其他人有这个问题,你将如何解决? Im使用Code :: Blocks和MinGW作为Windows Vista 32位的编译器。 *****编辑***** 这是我的项目中的生成选项。 请注意,这些是Project中的设置,而不是全局编译器: 在(项目名称) – >编译器设置 – > Otehr选项: (我用//来分隔命令) -mthreads// -fmessage-length=0// -fexceptions// -fident// 在(项目名称) – >编译器设置 – > #define中: WIN32// _WINDOWS// 在(项目名称) – >链接器设置 – >其他链接器选项: -static-libstdc++// -static-libgcc// -Wl,–enable-auto-image-base// -Wl,–add-stdcall-alias// -Wl,–enable-auto-import// 在链接器链接库中,我有扩展名为.a文件的各种链接,这些文件包括Bullet PHysics,Ogre3D和SFML 在search目录中,我有链接到MinGW / bin,MinGW […]

VBO与std :: vector

我用C ++编写了一个OpenGL的模型加载器。 我已经使用std::vector来存储我的顶点数据,但是现在我想把它传递给glBufferData() ,但是数据types是非常不同的。 我想知道是否有一种方法来在std::vector之间转换glBufferData()logging的const GLvoid * 。 顶点types typedef struct { float x, y, z; float nx, ny, nz; float u, v; } Vertex; vector<Vertex> vertices; glBufferData()调用 glBufferData(GL_ARRAY_BUFFER, vertices.size() * 3 * sizeof(float), vertices, GL_STATIC_DRAW); 我得到以下(预期)的错误: error: cannot convert 'std::vector<Vertex>' to 'const GLvoid*' in argument passing 如何将vector转换为与glBufferData()兼容的types? NB。 我现在不关心正确的内存分配。 vertices.size() * 3 * sizeof(float)最有可能是段错误,但我想先解决types错误。

重新抛出不正确的堆栈跟踪

我用“throw”重新抛出exception,但是堆栈跟踪不正确: static void Main(string[] args) { try { try { throw new Exception("Test"); //Line 12 } catch (Exception ex) { throw; //Line 15 } } catch (Exception ex) { System.Diagnostics.Debug.Write(ex.ToString()); } Console.ReadKey(); } 正确的堆栈跟踪应该是: System.Exception: Test at ConsoleApplication1.Program.Main(String[] args) in Program.cs:Line 12 但是我得到: System.Exception: Test at ConsoleApplication1.Program.Main(String[] args) in Program.cs:Line 15 但第15行是“投掷”的位置。 我用.NET 3.5testing了这个。

C:正确释放multidimensional array的内存

假设您有以下ANSI C代码来初始化multidimensional array: int main() { int i, m = 5, n = 20; int **a = malloc(m * sizeof(int *)); //Initialize the arrays for (i = 0; i < m; i++) { a[i]=malloc(n * sizeof(int)); } //…do something with arrays //How do I free the **a ? return 0; } 使用**a ,如何正确地将其从内存中释放? [更新] (解决scheme) […]

通过void *投射,而不是使用reinterpret_cast

我正在读一本书,我发现不应该直接使用reinterpret_cast ,而是将其与static_cast结合使用void * T1 * p1=… void *pv=p1; T2 * p2= static_cast<T2*>(pv); 代替: T1 * p1=… T2 * p2= reinterpret_cast<T2*>(p1); 但是,我无法find一个解释为什么这比直接演员更好。 如果有人能给我一个解释或指出我的答案,我将非常感激。 提前致谢 ps我知道什么reinterpret_cast用于,但我从来没有看到这是用这种方式

在C#中枚举对象的属性(string)

比方说,我有很多的对象,他们有很多string属性。 是否有一个编程方式来通过它们并输出属性名及其值?还是必须进行硬编码? 有没有可能是一种LINQ的方式来查询一个对象的属性types“string”,并输出它们? 你是否必须硬编码你想要回显的属性名称?

封闭如何在幕后工作? (C#)

我觉得我对闭包有一个相当好的理解,如何使用它们,什么时候可以有用。 但是我不明白的是他们是如何在记忆中幕后工作的。 一些示例代码: public Action Counter() { int count = 0; Action counter = () => { count++; }; return counter; } 通常情况下,如果{count}没有被闭包捕获,它的生命周期将被限制在Counter()方法中,并且在它完成之后,它将消失Counter()的其余堆栈分配。 当它被closures时会发生什么? Counter()这个调用的整个堆栈分配是否存在? 它是否将{count}复制到堆中? 它从来没有真的被分配到堆栈上,但被编译器认为是closures的,因此总是在堆上? 对于这个特定的问题,我主要关心的是如何在C#中工作,但不会反对支持闭包的其他语言进行比较。

读取registry和Wow6432Node键

我有一些代码读取registry,并在HKEY_LOCAL_MACHINE\Software\App\查找值,但在64位版本的Windows上运行时,该值在HKEY_LOCAL_MACHINE\Software\Wow6432Node\App\ 。 我应该如何最好的方法呢? 我是否需要一个64位安装程序,或者我应该重写我的代码来检测这两个地方?

复制构造函数和赋值运算符

如果我重写operator=复制构造函数会自动使用新的操作符? 同样,如果我定义了一个拷贝构造函数,那么operator=自动“inheritance”拷贝构造函数的行为吗?