小编Jim*_*uck的帖子

什么是C/C++程序及其插件DLL的最佳免费内存泄漏检测器?

我有.exe加载的.exe和许多插件.dll模块.(我有两者的来源.)跨平台(带源)解决方案是理想的,但平台可以缩小到WinXP和Visual Studio(在我的情况下为7.1/2003).

内置的VS泄漏检测器只给出了调用new/malloc的行,但是我有一个分配包装器,所以完整的符号堆栈跟踪是最好的.

检测器还能够检测.exe及其附带的插件.dll模块中的泄漏.

c c++ memory-leaks visual-studio

48
推荐指数
3
解决办法
10万
查看次数

如何修复WinXP下的DWMAPI.DLL延迟加载依赖?

我在WinXP下构建了一个.dll,声称它在加载时无法找到DWMAPI.DLL.问题是这个DLL是Vista DLL,对于安装了IE7的XP用户来说这是一个已知问题.建议通过添加/删除程序卸载IE7或修复.NET Framework.我做了修理,没有任何改变.我不打算卸载IE7,因为必须有一个更好的解决方案,而不是"重新安装Windows".

我读过有关试图卸载IE7的人的坏话,所以我不愿意走那条路.

我在Visual Studio 2003(7.1)下使用C++.我没有看到我可能在应用程序启动时强制延迟加载的选项.我刚刚创建DLL项目时使用了默认设置.我刚刚找到了一个有趣的选项,链接器 - >输入 - >延迟加载的DLL,所以我把DWMAPI.DLL放在那里强迫它延迟加载.但是,我在链接时得到了这个:

LINK : warning LNK4199: /DELAYLOAD:dwmapi.dll ignored; no imports found from dwmapi.dll
Run Code Online (Sandbox Code Playgroud)

..当然,它在尝试加载我的DLL时没有改变.为了它,我添加了导致DWMAPI.DLL的整个DLL树,我收到相同的消息.(对于记录,它是foundation.dll-> shell32.dll-> shdocvw.dll-> mshtml.dll-> ieframe.dll-> dwmapi.dll.)

为了更具体地说明我正在做什么,我正在编写一个Maya插件并在脚本编辑器中获取始终有用的文本:

// Error: Unable to dynamically load : D:/blahblahblah/mydll.mll
The specified module could not be found.
 //
// Error: The operation completed successfully.
 //
// Error: The operation completed successfully.
 (mydll) //
Run Code Online (Sandbox Code Playgroud)

我使用Dependency Walker来初步追踪问题,这就是我引导DWMAPI.DLL的原因.这些消息取决于我,DWMAPI.DLL是唯一一个旁边有黄色问号的东西:

Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved …
Run Code Online (Sandbox Code Playgroud)

dll windows-xp dwm

27
推荐指数
1
解决办法
8万
查看次数

错误:"BLAH.EXE"中的Side-by-Side配置信息包含错误

这是错误Dependency Walker为我提供了使用VC++ 2005 Express Edition构建的可执行文件.当我尝试运行.exe时,我得到:

This application has failed to start because the application configuration
is incorrect. Reinstalling the application may fix this problem.
Run Code Online (Sandbox Code Playgroud)

(我是清单/ SxS /等.在VC++ 2003之后做事的方式的新手.)

编辑:我正在我正在构建.exe的同一台机器上运行.在事件查看器中,我没有帮助:

Faulting application blah.exe, version 0.0.0.0, faulting module blah.exe,
version 0.0.0.0, fault address 0x004239b0.
Run Code Online (Sandbox Code Playgroud)

dependencies visual-studio-2005 manifest visual-c++

15
推荐指数
3
解决办法
3万
查看次数

Visual Studio变量声明

我有一个项目在附加包含部分中包含以下行:

"$(SOMEPATH_SHORTNAME)\包括"

有人能告诉我在哪里可以找到$(SOMEPATH)定义的吗?我只是在Visual Studio中搜索找不到它

visual-studio

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

从Objective-C移植到C++的最佳方法是什么?

我没有任何Objective-C经验,但具有强大的C++背景.是否有自动化工具/脚本,或者最糟糕的情况是,使用一些优秀的对Objective-C到C++编写的端口代码的参考手册方法?涉及的困难是什么?

编辑:我被告知代码使用Objective-C相当简单.它是一个iPhone应用程序,可能不会在操作系统级别的UI中使用太多.C++版本适用于非Apple平台,其中GNUStep不是一个选项,因此Objective-C++不是一个选项.

c++ objective-c

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

如何使用"x = x ++"之类的东西获得VS或Xcode警告?

本着与序列点相关的未定义行为的精神,例如"x = ++ x",它是否真的未定义?,如何让编译器抱怨这样的代码?

具体来说,我使用的是Visual Studio 2010和Xcode 4.3.1,后者是OSX应用程序,并没有提醒我这一点.我甚至把VS2010上的警告发送到"全部",并且很高兴编译了这个.(为了记录,VS2010的版本在变量中添加了1,其中Xcode的版本保持变量不变.)

c visual-studio-2010 undefined-behavior sequence-points xcode4.3

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

为具有扎实C++背景的人学习Java的最佳方法是什么?(书籍等)

我已经安装了Eclipse和JDK,经历了"Hello World"教程,并阅读了Eclipse文档(关于Eclipse本身和使用Eclipse开发Java).我正在查看JUnit示例,以便更好地了解Java在运行时的工作原理.

当我学习一种具有更新范式的新计算机语言时,我就会感到困惑,我认为这部分是由于我对C++的经验.

关于优秀Java书籍/教程/等的任何建议.对于有C/C++背景的人?

java

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

如何摆脱 C 代码中的 gcc 汇编程序警告“为 .init 设置不正确的节属性”?

我有以下 C 代码:

struct myStruct_t
{
    const char     m_name[60];
    const uint32_t m_data;
};

const struct myStruct_t myStruct
    __attribute__(( __aligned__( 64 ), section(".init") )) =
    {
        "myName",
        (uint32_t)&someOtherStruct
    };
Run Code Online (Sandbox Code Playgroud)

当我在 gcc 4.1.1(适用于 PS3)中编译时,我收到警告:

1>c:/t/ccy6.s: Assembler messages:
1>c:/t/ccy6.s(106): Warning: setting incorrect section attributes for .init
Run Code Online (Sandbox Code Playgroud)

警告指向的汇编代码是下面的“.section”子句:

            .section              .init,"aw",@progbits
            .align 6
            .type                 myStruct , @object
            .size                 myStruct , 64
myStruct :
            .ascii                "myName"
            .long                 someOtherStruct
Run Code Online (Sandbox Code Playgroud)

它不喜欢标志的“w”(可写)部分,因为 .init 中的内容是只读的,并且所有可能位置中的“const”不会迫使编译器不吐出“w”。我如何告诉编译器“不,真的,它是 const,我不是在开玩笑”?

c assembly gcc

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