我非常喜欢Code :: Blocks作为其构建系统并逐步调试功能 - 即我非常喜欢使用封装到gcc/gdb而不是使用Makefile或命令行.问题是,经过多年的VIM使用,我无法在大脑中受到损坏(或者有些人可能会说,而且我无法在标准的Windows文本编辑器中进行编辑).
因此,我设置Code :: Blocks以使用VIM作为.cpp / .c/*.h 的文件处理程序.以及VIM的--server-name和--remote-tab选项可以右键单击我的C中的文件: :B项目窗口并选择使用文件扩展名处理程序打开它们,它们在单个VIM窗口中弹出为新选项卡 - 然后我切换回C :: B,点击F9进行构建和运行等.
我想改进我的工作流程,所以问题有两个:
当我双击项目文件列表中的文件而不必右键单击 - >打开文件扩展名处理程序时,我可以默认使C :: B打开VIM吗?
我可以在VIM中进行一些绑定,这样我可以点击一个按钮并让Code :: Blocks构建/运行/调试我的项目吗?
WRT 2,我知道C :: B有重建项目的命令行选项,但这与打开C :: B窗口并看到编译日志/监视窗口不同.我还注意到C :: B有一个非常基本的DDE接口 - 我可以使用VIM发送DDE命令吗?也许有一个简单的SendKeys插件我还没发现我可以破解工作?
或者,是否有像C :: B这样的轻量级IDE,这使得使用外部编辑器非常容易?我不准备运行Eclipse,在Visual Studio中使用Microsoft的编译器让我感到尴尬.
任何帮助赞赏.
谢谢,约翰
当我选择开始使用控制台项目时,它允许您选择C或C++.但是一旦创建,我无法弄清楚如何改变它.另外,当您创建Win32 GUI应用程序时,它根本不提供选项,其默认值为C++.
我在哪里可以换成C?我一直在寻找所有项目设置.从我的重命名文件.cpp到.c似乎并没有做任何事情,它编译文件作为C++.我知道没有IDE,你只需将可执行文件更改g++为gcc,但是如何为CodeBlocks中的当前项目设置它?
当我使用命令行测试在MinGW + MSys中编译一个简单的Win32 GUI程序并运行它:
$ g ++ main.cpp -o app -std = c ++ 0x
$ ./app
只显示一个对话框.但是把这个程序放到Code :: Block IDE中并编译它,它带有一个带有对话框的黑色控制台盒.在链接选项中添加-mwindows无效.
main.cpp中
#include <windows.h>
int WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
MessageBox(0,"Hello, Windows","MinGW Test Program",MB_OK);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用libcurl上传文件,但似乎它没有验证与我的服务器的连接.我试过使用ftp://username:password@example.com/但无济于事.这是我的代码:
#include <stdio.h>
#include <string.h>
#include <curl/curl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <errno.h>
#ifdef WIN32
#include <io.h>
#else
#include <unistd.h>
#endif
#define LOCAL_FILE "C:/myfile.txt"
#define UPLOAD_FILE_AS "file.txt"
#define REMOTE_URL "ftp://example.com/" UPLOAD_FILE_AS
#define RENAME_FILE_TO "file.txt"
static size_t read_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
curl_off_t nread;
size_t retcode = fread(ptr, size, nmemb, (FILE *) stream);
nread = (curl_off_t) retcode;
fprintf(stderr, "*** We read %" CURL_FORMAT_CURL_OFF_T " bytes from filen", nread);
return retcode;
}
int main(void) …Run Code Online (Sandbox Code Playgroud) 作为漫长而肮脏的故事的一部分,其最终目标只是安装GMP以与Windows中的code :: blocks一起使用,我正在尝试配置gmp.我使用以下命令执行此操作:
./configure --prefix = $ {gmp_install}
一切都开始得很好.几分钟后,一点点进展,一切都停止了,我得到这个消息:
configure:error:$ PATH或/ usr5bin中没有可用的M4
我甚至不知道M4是什么,但我发现它是某种宏处理器.所以我下载它,并将文件夹添加到我的Path变量.然后我再次启动配置,但结果相同.
我需要做些什么让M4让它运转起来吗?我真的很茫然.谢谢你的帮助.
我在使用 Code:Blocks 时遇到了一个奇怪的问题。编写 C 程序后,我单击 Build 并运行,它在几分之一秒内编译,但随后打开一个新窗口,大约 12 秒后输出出现在窗口上。甚至像这样的基本代码也需要很多时间
#include<stdio.h>
int main()
{
printf("HELLO");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
以下是所发生情况的快照。由于我不允许发布图片{新论坛}我发布链接。
当我点击构建并运行时,这个窗口很快就会出现

然后大约 10-12 秒后,将出现此窗口。如您所见,它说执行时间花了 11 秒。

知道为什么会这样吗?如何解决?我没有对代码进行任何调整:块和设置与默认情况下相同。
当我在 CodeBlocks 中测试ffmepg 编码/解码 exapmle c 程序时,它显示:
/ffmpeg_sources/ffmpeg/libavutil/internal.h fatal error: config.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
ffmpeg_source/libavutil文件夹中的许多其他头文件中发生错误。我搜索了该文件夹但没有找到 config.h 文件。其他文件夹中有 config.h,但不适用于 libavutil 文件夹中的头文件。
我尝试下载最新的 ffmepg zip 文件,但也找不到其中的 config.h 文件。
我应该在哪里找到该文件?
我是C编程的新手,我编写了这段代码,因为我被要求主要使用printf()和scanf()来做一些事情.我知道可以有更好的方法来解决这个问题,我很快就需要学习,但无论如何,现在这就是我所拥有的:
int add1, add2, exponent, exponent_result, multiplier, parenthese, product, sub, total;
printf("Let's try a slightly more complex calculation, in which we'll use an exponent.\n\n");
printf("Type 5 whole numbers or integers.\n\n");
scanf("%i %i %i %i %i", &add1, &add2, &exponent, &multiplier, &sub);
printf("Out of the numbers you typed, we're going to make this operation: (%i + %i^%i) * %i - %i\n\n", add1, add2, exponent, multiplier, sub);
exponent_result = pow(add2, exponent);
parenthese = add1 + exponent_result;
product = parenthese * multiplier;
total = …Run Code Online (Sandbox Code Playgroud) 编辑:找到了解决方案,但还不能接受我自己的答案。
我在将库静态链接到我的程序时遇到一些问题。我使用 MinGW 工具链和 Code::Blocks 作为 IDE/构建系统,从 Linux 交叉编译到 Windows。我还使用与程序相同的工具链自己编译了该库。
我对于交叉编译和 Windows 编译都是完全陌生的。
编辑:我刚刚在 Windows XP 的虚拟安装上尝试了相同的过程(使用 Code::Block 捆绑的 MinGW)并遇到了相同的问题,所以我想这不是因为交叉编译器。
我将在下面给出所有详细信息,但本质上问题是链接器抱怨缺少_imp__some_symbol符号。这些符号存在于静态库中,但不是作为_imp__some_symbol,而只是作为_some_symbol。我已经通过 grep 的输出验证了这一点nm libSomeLibrary.a
该库本身是 BearLibTerminal (您可以在https://bitbucket.org/cfyzium/bearlibterminal/downloads/找到源代码)。如前所述,我自己使用与主程序相同的工具链从源代码编译了它。
我的主程序包含的代码是 BearLibTerminal 给出的“Hello world”示例http://foo.wyrd.name/en:bearlibterminal#simple_examplec_c:
#include "BearLibTerminal.h"
int main()
{
terminal_open();
// Printing text
terminal_print(1, 1, "Hello, world!");
terminal_refresh();
// Wait until user close the window
while (terminal_read() != TK_CLOSE);
terminal_close();
}
Run Code Online (Sandbox Code Playgroud)
我完整的 Code::Blocks 构建日志可以在https://pste.eu/p/VMJp.html找到。它包含 BearLibTerminal 及其依赖项的构建日志,以及我的程序。
相关的部分(我认为)是:
i686-w64-mingw32-g++ -Wall -fexceptions …Run Code Online (Sandbox Code Playgroud) 如何在一个注释中突出显示一段代码?有没有一个插件可以帮助我?