使用 gcc 编译时出现以下链接器错误:
undefined reference to `SetStretchBltMode@8'
undefined reference to `StretchDIBits@52'
undefined reference to `SetDIBitsToDevi
Run Code Online (Sandbox Code Playgroud)
这些函数是在 Windows 库中定义的吗?
如果是的话,它们是随 Vista 一起安装的,还是我需要安装它们,如果是的话,我可以在哪里下载它们。
谢谢
如何在“Eclipse IDE”中使用 Schema 1.1 验证 XML 文档,
或者
如何使用外部 Apache xerces 解析器在“Eclipse IDE”中验证 XML 文档?(这将解决我的问题,因为 xerces 支持 Schema 1.1)
我需要使用 Eclipse (gdb) 在 Linux 上调试程序。该程序以 root 身份运行并且相当大。带有调试符号的二进制文件大约有250MB大,启动后有超过60个正在运行的线程。
我正在考虑最好的解决方案:
我认为第 1 号(gdbserver)将是最好的解决方案,不幸的是它工作不可靠。gdb 和 gdbserver 之间的连接丢失。我认为eclipse <-> gdb <-> gdbserver之间传输的大量数据存在问题。
数字 2(以 root 身份运行 eclipse)意味着以 root 身份运行每个进程,因此也会干扰版本控制系统,因为 Eclipse 插件将使用 root 用户而不是我的用户来更改版本控制文件。
我没有尝试第三个(suid gdb)。你怎么看待这件事?它到底有用吗?我知道 suid root gdb 和没有 root 密码一样安全,但该机器仅供我用于开发和调试。当然,可能有一个“启用/禁用”脚本,仅在必要时设置 suid 位。
你有什么其他的建议?
我正在开发一个 C++ 项目,在 linux 上运行 eclipse Indigo + CDT
它由一个库项目和一个包含该库单元测试的项目组成。
显然,第二个项目取决于第一个项目。
两个项目都使用外部构建器
但是,当我修改第一个项目的标头时,它不会重建测试项目。我无法让它做到这一点...它只会重新链接第二个项目,即使标头包含在测试项目中。这非常烦人,因为我经常在处理库时进行工作构建,然后在某个时候我进行完全重建,然后在我 30 分钟前所做的事情上看到大量错误!
CDT 全局构建控制台的示例输出:
**** Build of configuration Debug for project libxxx ****
make -j all
Building file: ../foo.cpp
Invoking: GCC C++ Compiler
ccache g++ -I"/home/foke/workspaces/cpp/libxxx/include" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"foo.d" -MT"foo.d" -o "foo.o" "../foo.cpp"
Finished building: ../foo.cpp
Building target: libxxx.a
Invoking: GCC Archiver
ar -r "libxxx.a" ./foo.o ./src/yyy.o ./src/detail/zzz.o
ar: creating libxxx.a
Finished building target: libxxx.a
**** Build Finished ****
**** Build of …Run Code Online (Sandbox Code Playgroud) 我正在使用 eclipse CDT 来创建项目。我正在创建一个工作区,并且必须在子目录中创建项目
+ workspace
|
+--+ level 1 (folder)
| |
| +-- project 1
| |
| +-- project 2
|
+--+ level 2 (folder )
| |
| +--+ level 3 (folder inside level 2)
| |
| +--- project 3
Run Code Online (Sandbox Code Playgroud)
根据上图,我必须在名为 level1 的文件夹内创建项目 1 和 2,类似地在文件夹 level 3 内创建项目 3 ( level 3 文件夹位于文件夹 level2 内)
如果我尝试创建该项目,它会显示“与另一个项目的位置重叠”
请提出建议。
问候约翰尼
如何从命令行构建 C 项目的索引?我正在考虑在脚本中使用它,这样我就可以每天晚上用最新的代码构建索引。(我们的代码库非常大,通常需要几个小时才能构建索引)。并且,可能在团队内共享索引结果。
我找到了这个预构建索引帮助文档: Pre-built Indexs in CDT 4.0
但它似乎有局限性,例如,它不尊重我的项目设置,在我的项目中,在路径和符号中,我设置了包含路径、宏、源位置。特别是我在源位置设置了一些过滤模式。这些项目特定设置全部保存在 .cproject 文件中。
如何使命令行索引器尊重这些设置?我想基本上我希望命令行索引器生成与我从 GUI 生成的结果相同的结果。
我使用的是3.7.2,CDT 8.0.2
我正在尝试在 Eclipse 的 C++ 项目中使用 sqlite3,并在网上找到了大量有关使用 API 的建议,但不幸的是我遇到了较早的障碍。我想这是因为我缺乏 C/C++ 和 CDT 的经验。我只是将 sqlite3.c 和 sqlite3.h 复制到项目的源文件夹中,并有一个测试方法如下:
int main() {
sqlite3* db;
sqlite3** dbpointer = &db;
const char* dbname = "test.db";
sqlite3_open(dbname, dbpointer);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
然而,sqlite3.c 文件在 Eclipse 中显示时存在许多错误。例如,以下部分注释为“无法解析字段‘IN_DECLARE_VTAB’”。
#ifdef SQLITE_OMIT_VIRTUALTABLE
#define IN_DECLARE_VTAB 0
#else
#define IN_DECLARE_VTAB (pParse->declareVtab)
#endif
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时,出现一系列错误,例如:
gcc -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/sqlite3.d" -MT"src/sqlite3.d" -o "src/sqlite3.o" "../src/sqlite3.c"
../src/sqlite3.c:30997: error: initializer element is not constant
../src/sqlite3.c:30997: error: (near initialization for `aSyscall[0].pCurrent')
../src/sqlite3.c:30997: error: initializer element …Run Code Online (Sandbox Code Playgroud) 我在 Linux 和 Windows 上使用eclipse-cpp-luna-SR1和工具链gcc 4.9.1
代码分为两个项目:
Properties|C/C++ Build|Settings|Debugging|Generate gcov information (-ftest-coverage -fprofile-arcs)Generate gcov information启用从可执行项目运行程序
Profiling Tools|Profile Code Coverage
工作正常,结果显示在选项卡中,其中包含来自可执行项目以及静态库项目中的所有源代码文件的gcov覆盖信息。
当检查可执行项目中的源文件时,颜色突出显示效果很好,但对于驻留在静态库项目中的源文件则根本不起作用 - 即根本没有突出显示!
我已经在 Linux 和 Windows 上进行了尝试: 相同的行为
在 eclipse-cpp 的早期版本中,如 Juno (4.2) 和 Kepler (4.3),突出显示对于静态库中的源文件效果很好。
有什么线索吗? (Coverage %)
我在调试程序时使用了 Eclipse-CDT“反汇编”视图(在“调试”视角中。我发现 Eclipse-CDT 使源代码显示和汇编代码显示同步的方式很有用。
我想在不运行调试器的同时仔细阅读编译器生成的汇编代码。我有兴趣更改以下内容:
然后观察生成的汇编代码的变化。
在Eclipse-CDT中,不主动调试程序能不能查看反汇编,yes/no?
如果是,如何?
也许 Eclipse-CDT 不是用于此的正确工具。我似乎记得有一种方法可以促使编译器生成一个详细/可读的汇编列表,其中包含行号和注释回原始源代码。
我在 /tmp/test.sh 中创建了简单的 shell 脚本文件
#!/bin/sh
echo 'aaaa'
Run Code Online (Sandbox Code Playgroud)
在 Eclipse->C/C++ Build->Setting->Build Step -> Pre-build steps->Command 中,我添加了 TEST =/tmp/test.sh
比在 C/C++ Build->Setting->Tool Settings->Cross GCC Compiler ->Command line pattern 中,我尝试像-D ${TEST}这样使用这个变量-D aaaa(shell 脚本的输出)
但在构建控制台我没有看到,-D aaaa已通过了GCC,其实我没有看到-D在所有
这是为什么?我想在预构建中设置变量,这将是 shell 脚本的输出,并与 gcc 命令行模式一起使用
我怎样才能做到这一点 ?