编写C语言开发环境——编译模块

使用C语言编写Python模块-引子 为什么要用C语言写Python模块,是Python不够香么?还是觉得头发还茂盛?都不是。因为C语言模块有几个显而易见的好处: 可以使用Python调用C标准库、系统调用等; 假设已经有了一堆C代码实现的功能,可以不用重写,岂不美滋滋; 性能?也算; 其他一些好处。 注:以下代码基于Python3。 开局举个栗 In a nutshell,用C编写Python模块就是下面几步: 准备工作 #in... 阅读详情

         在winodws下C语言的编译器,我并不熟悉,winTC下是有一些用于编译C语言的程序,真心不熟,也不知道会遇到什么问题。所以搜了一下windows下的Gcc,真的有这个移植,这下好办了。windows下的GCC及G++被集成在mingw32中,连Gdb都有。下载解压出来,就是linux编译工具的win32版本。

        还有一个问题是自动生成makefile,在Linux下有autoconf及automake这两个工具能实现,搜了一上午也没找到win32版本的。只好放弃了makefile,直接用gcc的编译,将所有的.c文件全编译成.o文件,然后集中到一个debug文件夹中,进行链接。这个开发环境是面向初学者的,没有makefile应该不会有太大的问题。

        在VC中调用dos命令调用Gcc来编译,找到了三种调用方式,分别是

  System(LPCTSTR cmd);


  UINT WINAPI WinExec(
       __in          LPCSTR lpCmdLine,
       __in          UINT uCmdShow
    );
         以及
HINSTANCE ShellExecute(      
    HWND hwnd,
    LPCTSTR lpOperation,
    LPCTSTR lpFile,
    LPCTSTR lpParameters,
    LPCTSTR lpDirectory,
    INT nShowCmd
);


          他们的区别在于

       system()在调用的时候会闪过一个dos窗口,不能用。

       winExec不能使用操作符,像重定向,管道等。不过可以通过第二个参数将窗口隐藏。

       shellExecute也能隐藏窗口,并且功能强大。一开始我想直接用shellExecute调用Gcc进行编译,却也不能使用操作符。后来调用cmd,其他命令用作参数,完全可以运行dos下的所有命令。

        Build_cmd=gcc+option+BUILD_OBJ+File_str+" 2>>"+dir+"\\stderr";
        block_ShellExecute(NULL,"open","cmd","/c "+Build_cmd,project_dir,SW_HIDE);

不过要注意,那些需要输入的命令不可用,会进无限等待。另外,我还遇到了另一个问题,shellExecute并不是阻塞运行,因此可能第一步的.o文件还没完成生成,就运行了链接导致出错。一开始我用判断.o文件是否完全生成来解决,这样做还得先判断是否编译出错,并不是一个好办法。后来找到了一个更好的解决办法,通过判断进程是否退出来实现阻塞,代码如下:

void block_ShellExecute(HWND hwnd,LPCTSTR lpOperation,LPCTSTR lpFile,LPCTSTR lpParameters,LPCTSTR lpDirectory,INT nShowCmd)
{
	SHELLEXECUTEINFO si;
	ZeroMemory(&si, sizeof(si));
	si.cbSize = sizeof(si);
	si.fMask = SEE_MASK_NOCLOSEPROCESS;
	si.hwnd=hwnd;
	si.lpVerb = _T(lpOperation);
	si.lpFile = _T(lpFile);
	si.lpParameters=_T(lpParameters);
	si.lpDirectory=_T(lpDirectory);
	si.nShow = nShowCmd;
	
	ShellExecuteEx(&si);
	
	DWORD dwExitCode;
	GetExitCodeProcess(si.hProcess,&dwExitCode);
	while (dwExitCode == STILL_ACTIVE)
	{
		Sleep((DWORD)5);
		GetExitCodeProcess(si.hProcess, &dwExitCode);
	}
	
	CloseHandle(si.hProcess);
}

         

          接下来要试着做调试模块,现在还没有什么想法,头疼。

 

C语言编译器为什么能够用C语言编写? 不知道大家有没有想过一个问题:C语言编译器为什么能够用C语言编写? 今天小编就带大家一探究竟! 所谓C语言编译器,就是把编程得到的文件,比如.c,.h的文件,进行读取,并对内容进行分析,按照C语言的规则,将其转换成cpu可以执行的二进制文件。 其本质在于对文件的读入,分析,及处理。这些操作,C语言都是可以实现的。 所以用C语言来做C语言的编译器是完全可行的。 但是,历史上的第一... 阅读详情

相关推荐

Python 中访问用 C 语言编写的模块,通常是通过 Python C API 实现的

在 Python 中访问用 C 语言编写的模块,通常是通过 Python C API 实现的。Python 提供了丰富的 C API,允许你将 C 代码编译为 Python 模块,从而在 Python 中直接调用 C 函数。如果你不想编写 Python C API 代码,可以使用 ctypes 或 cffi 直接调用 C 函数。将 C 代码编译为 Python 可加载的模块(.so 或 .pyd 文件)。首先,编写一个 C 文件,定义你想要在 Python 中调用的函数。示例:test.py。

记录学习的过程 878

华为云HCIA鲲鹏结业考试笔记 试题及答案

使用华为鲲鹏性能优化工具对C/C++应用程序进行性能分析时,能够查看到函数源代码、 汇编代码,以及函数汇编代码basic block的控制流图。将软件从X86平台迁移至鲲鹏平台时,以下哪个工具可以分析出软件中需要修改的代码,并给出修改建议?鲲鹏云容器引擎是一种云中间件,直接提供基于鲲鹏的云容器,其中包含的基础库均为aarch64版本。鲲鹏处理器可以很好的应用于高性能计算场景,以下哪些场景不属于HPC的典型应用?C/C++语言开发的源码在编译时,以下哪些模块是不需要的?

skybot的专栏 3189

华为鲲鹏云HCIA考试资料(二)

29.性能优化工具特性 支持采集整个系统或指定进程(包括运行中的进程或直接启动的进程)的CPU Cycles性能事件,能够快速定位到热点函数,包括应用程序函数、模块函数与内核函数,甚至能够定位到热点指令。 支持热点函数按照CPU核/线程/模块进行分组,支持查看热点函数调用栈。 支持通过火焰图查看热点函数及其调用栈。 支持代码映射功能,即查看函数内的热点指令及该指令对应的高级语言文件及行号。 支持显示汇编代码的控制流图。 支持分析Java代码的热点函数及热点指令

c语言编译模块调用,C代码与C++互相调用的小技巧

本文转载自【微信公众号:strongerHuang,ID:strongerHuang】经微信公众号授权转载,如需转载与原文作者联系1C与C++相互调用在一个嵌入式系统中大部分的底层和驱动层更多的是采用C语言来进行开发,而上层应用、服务更多的采用C++等高级语言来进行面向对象等方面的开发方式,那么就存在一个上层调用底层接口的问题,比如最常用的C++调用C的接口来完成相应的外设驱动接口。我们知道C++...

weixin_31304499的博客 481

六自由度机械臂运动学分析及其轨迹规划

六自由度机械臂轨迹规划 通过对比三次多项式插值法与五次多项式插值法的效果,选取后者对机械臂进行轨迹规划,将运动学解导入Matlab Robotics Toolbox仿真,得到各关节角度、速度和加速度与时间关系曲线。 三次多项式插值法 三次多项式有4个待定系数,可同时对起始点和目标点的角度和角速度给出约束条件。 数学公式 MATLAB代码 五次多项式插值法 五次多项式有6个待定系数,可同时对起始点和...

两条眉毛 6万+

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)【新手必看】挖漏洞流程指南,黑客手把手教你挖漏洞月入过万!收藏这篇就够了!(附学习笔记)

weixin_57514792的博客 1105

c/c++ 笔试、面试题目大汇总

1.求下面函数的返回值(微软)int func(x) {     int countx = 0;     while(x)     {           countx ++;           x = x&(x-1);      }     return countx; }  假定x = 9999。 答案:8思路:将x转化为2进制,看含有的1的个数。2. 什么是“引用”?申

马如林的IT博客 3361

Qt UI界面美化教程1:【“飞扬青云” Qt精美控件】使用教程1

相信很多小伙伴在使用Qt Widget的过程中都会遇到一个问题,开发出来的界面,丑!丑!丑!当然Qt做界面美化可以用到QSS,需要对前端知识有一定了解,后续本套教程将会做讲解。本篇文章,我们直接站在巨人(大佬飞扬青云)的肩膀上,使用他开发好的163款自定义控件,请大家一定支持他,去给他小心心,他的个人主页:本篇文章只讲述如何在 QtDesigner 安装这些控件。

2401_87556704的博客 1421

【鲲鹏HCIA考试】随堂习题卷一

文章目录单选题多选题判断题 单选题 使用命令rpmbuild -bb XX. spec (XX表示文件名)制作RPM包时,RPM包生成在什么目录下? A、BUILD B、SOURCE C、RPMS D、SPEC 在BenchmarkSQL执行以下哪个脚本,可以对表中写入数据? A、runLoader. sh B、runBenchmark. sh C、runDatabaseBuild. sh...

一路嵌行的博客 2万+

SAP生产订单(创建-下达-发料-报工-入库)全流程及反向流程

SAP创建下达报工入库发料以及取消发料取消入库,批量下达删除关闭,生产订单出入库查询和状态更改查询记录

weixin_38974136的博客 2万+

基于分位数回归的静态CoVaR计算 案例与代码

原文链接:https://bbs.pinggu.org/thread-7925441-1-1.html 一、静态CoVaR模型介绍 二、资料简介 实现对相关期刊论文进行论文重现,解决实证分析中的技术操作问题。里面包含了每一步详细的步骤,可以方便的利用这个手册解决大部分利用分位数回归计算静态CoVaR的论文的模型实现问题。即从数据下载到模型实现一整条操作步骤。 关键词:【分位数回归】【Co...

ChenQihome9的博客 7506

【鲲鹏HCIA考试】错题集

BenchmarkSQL执行以下哪个脚本加载数据? A、./runBenchmark. sh B、./runDatabaseBuild.sh C、./runDatabaseDestroy. sh D、./runLoader. sh 执行测试: ./runBenchmark.sh 清除数据: ./runDatabaseDestroy. sh 创建测试表,以及测试数据预加载: ./runDatabaseBuild.sh 对表中写入数据: ./runLoader. sh 代码.

qq_44745905的博客 2万+

73、结合无人机进行rk3588oak-lite跟踪目标物体进行识别、跟踪

搭建仿真转换模型环境,主要python版本和我下载的rknn2的版本。截取shape节点,输出模型。so库也要对应转模型的whl。其中安装的whl版本。

sxj731533730 1625

c语言编译时需要哪些模块,编写C语言开发环境——编译模块

在winodws下C语言的编译器,我并不熟悉,winTC下是有一些用于编译C语言的程序,真心不熟,也不知道会遇到什么问题。所以搜了一下windows下的Gcc,真的有这个移植,这下好办了。windows下的GCC及G++被集成在mingw32中,连Gdb都有。下载解压出来,就是linux编译工具的win32版本。还有一个问题是自动生成makefile,在Linux下有autoconf及automa...

weixin_34138585的博客 667

GD32F130之USART多机通信

简介 在多机通信中,一个从机应该只接收它需要接收的数据,且只应该在它需要接收数据时才检测串口。而始终接收RX线上的数据对从机来说是一种负担。 多机通信硬件设计 远距离方案:RS485 板级方案: 静默模式 静默模式有什么作用? 答:如果 USART 处于静默模式,所有的接收状态标志位将不会被置位。 如何进入静默模式? 答:软件可以通过将 USART_CMD 寄存器中MMCMD 位置 1 使 USART 进入静默模式。 如何从静默模式中唤醒? 答:有两种方式可选,①检测到总线

luliplus的博客 302

国科大学习资料--图像处理(彭思龙、杨戈)--2020年期末考试题解析(学长整理分析)

在对20年卷子分析前,先看看19年卷子的解析(后面有20年的变化,由于从核心课调整到了普及课,20年的卷子相对简单,但是还是有很多细节) 解析:(字写的不好别嫌弃!!!!) 20年的卷子 第一题:和19年基本一致,但是加了高斯核计算费用,要算一个节省计算成本比率,所以去多看看PPT 第二题:和19年基本一致,加了证明两个高斯卷积仍然是高斯卷积,相当于19年题2和3结合 第三题:采样定理,和19年基本一致,但要注意加了证明 第四题:考了形态学提取图像边界 第五题:直方图,和19年一

无名何许人的博客 4364

C语言+Python混合编程:用CPython扩展开发高性能模块

在编程领域,C语言以其高效的性能和对底层硬件的强大控制能力闻名,而Python则凭借其简洁的语法、丰富的库以及快速开发的特性受到广泛青睐。将C语言和Python进行混合编程,利用CPython扩展开发高性能模块,能够充分发挥两者的优势,在提高程序性能的同时保持开发的高效性。本文将详细介绍如何使用CPython扩展来实现C语言和Python的混合编程,为技术人员提供实用的开发指南。

星辰夜语的博客 1033

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

C语言编程实验报告

✅ 在Ubuntu系统下编写、编译和运行C语言程序✅ 多文件编程的实现方法,包括头文件的使用✅ 在Ubuntu系统下使用gcc命令行编译多文件程序✅ 在Windows系统下使用Dev-C++集成开发环境编译运行程序✅ 编写和使用Makefile来自动化编译过程。

2301_79825245的博客 639

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Ubuntu桌面版下C语言的编译以及make的使用

ubuntu下的C语言模块编译与连接 文章目录ubuntu下的C语言模块编译与连接目的环境实验步骤总结 目的 熟悉编译工具GCC,在linux操作系统下对一些简单的C语言程序进行编译和执行。 熟悉make工具和makefile文件。 环境 ubuntu 18.04 桌面版 实验步骤 安装ubuntu18.04的虚拟机并下载编译工具GCC 编写 C 语言程序 使用GCC命令编译并连接两个程序 下载安装make 5.编写makefile文件 6.使用make命令 7.

li_de_kun的博客 386

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android通过JNI实现与C语言的串口通讯操作蓝牙硬件模块

一直想写一份技术文档,但因为自感能力有限而无从下笔,近期做了个关于Android平台下实现与C语言的通讯来操作蓝牙模块的项目,中间碰到了很多问题,也在网上查了很多资料,在完毕主要功能后。也有一些人在网上问我一些问题。这里写下这篇文档算是一个阶段性的总结。假设反响好。兴许将会发上Android Stub与新版Android HAL的学习文档。 因为蓝牙模块是串口通讯机制。使用C语言来訪问,...

weixin_33672109的博客 525

c语言入门开发,通过cygwin开发环境,第一个程序hello

安装cygwin 1.概述 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统 简言之,cygwin是一个在windows平台上运行的 linux模拟环境,使用一个Dll(动态链接库)来实现 安装地址:https://cygwin.com/i...

jackson的博客 1194

STM32程序采用C语言编写

本文介绍了基于STM32单片机的音频频谱分析系统设计。系统采用STM32F103C8T6为核心控制器,通过咪头采集音频信号,经LM358放大后由ADC采样,利用FFT变换实现频谱分析,并将结果实时显示在OLED屏幕上。软件采用Keil5开发环境编写C语言程序,硬件设计使用Altium Designer19绘制原理图,并通过Protues实现仿真验证。系统实现了音频信号的采集、处理与可视化显示功能,为音频分析提供了一种实用的解决方案。

2301_79312104的博客 448

C 语言安装使用教程

C语言作为通用高效编程语言,广泛应用于系统开发领域。本文详细介绍了C语言开发环境配置:Windows推荐MinGW/TDM-GCC或VS Code+WSL;macOS推荐Xcode命令行工具或Homebrew;Linux通过apt安装build-essential。包含基础程序示例、常用GCC编译参数说明,推荐了VS Code等开发工具,并解答常见安装问题。最后建议学习者深入掌握指针、内存管理等核心概念,提供GCC官网等学习资源。全文涵盖从环境搭建到进阶学习的完整入门指南。

真正的大师永远怀着一颗学徒的心 1593

【C语言】使用VSCode编译C语言程序

这里简单记录一下使用VSCode编译C语言程序,目前初步使用VSCode进行简单编写,置于里面的json文件为什么要那样配置,后续再进行学习吧。

tesans的博客 1万+

在Linux下简单编写、编译并执行一个C语言程序

本文面向第一次在linux尝试写C语言程序的新人。有经验的请绕行。 C语言用法不是本文介绍的关键,本文只是引入如何第一次在linux系统下编写、编译和执行一个简单的c程序。学会后请自行深入。 = 前提基础 = Linux系统的路径写法有两种,一种是相对路径一种是绝对路径。 绝对路径都是以“/”开头的,比如/usr/bin/vi或者/home/zorro/,代表从根目录"

Zorro Lang Red Space 6万+

Windows下C语言编译器的选择(开发环境的搭建)

Windows下C语言编译器的选择(开发环境的搭建) 参考连接:http://c.biancheng.net/cpp/u/c18/ 所谓搭建开发环境,也就是安装编译器或者 IDE(集成开发环境)。Windows 下的C语言 IDE 众多,多如牛毛,初学者往往不知道该如何选择,本节就来给大家指点迷津。 1) Visual Studio Windows 下首先推荐大家使用微软开发的 Visual S...

bingyu的博客 1万+
上一篇: 阻塞调用ShellExecute函数
下一篇: VC中遍历文件夹下的文档及子文件夹 .
AstrayLinux
博客等级 码龄15年 55粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值