打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
TCC编译winapi的问题

TCC编译winapi的问题  

2013-04-02 17:08:27|  分类: C语言 |字号 订阅


这里的TCC指Tiny C Compiler,是一个小巧的c编译器,很好用。
编译常规c程序很方便,但是用到winapi的时候遇到特殊lib文件需要引用,找了很多资料发现很少有解决方法,没办法,只能自己查帮助文档,终于理清了用法。
以一个例子说明,reg.c内容如下:

#include <windows.h>

main()
{
HKEY hkey ;
char iepath[256];
LONG Size = 256;

if(RegOpenKeyA(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\IEXPLORE.EXE",
&hkey) == ERROR_SUCCESS)
{
if(RegQueryValueA(hkey,
NULL,
iepath,
&Size) == ERROR_SUCCESS)
{
printf("%s",iepath);
}
}
}

这是个读取注册表程序,调用了winapi里的RegOpenKeyA函数。
直接用tcc -run reg.c不能直接运行,提示函数未定义。
查询winapi32帮助,知道RegOpenKeyA函数在advapi32.dll中,编译的时候需要添加advapi32.dll调用。
tcc-win32.txt文档(tcc的doc文件夹)中,有两种办法:

1.用tiny_impdef将advapi32.dll生成advapi32.def文件,放在源文件同一文件夹,编译的时候用:
tcc -run reg.c advapi32.def

2.From the windows headers, only a minimal set is included.  If you needmore,  get MinGW's "w32api" package. 
http://www.mingw.org/
找到w32api后,提取里面的lib文件夹的libadvapi32.a文件,放到tcc的lib文件夹下。
tcc的帮助tcc-doc.html文档中,对-llib参数描述如下:
`-lxxx'
Link your program with dynamic library libxxx.so or static library libxxx.a. The library is searched in the paths specified by the `-L' option.
所以可以用如下方式调用:
tcc -ladvapi32 -run reg.c
不带-run参数可生成可执行文件。
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用VB设置IE代理
_is_isc.dll时出错找不到指定的模块
如何在Windows操作系统中改变文件打开方式
电脑小技巧-手把手教您手工剿灭QQ广告弹出木马
Windows下zlib库和libPng库的编译和使用
TCC-Win32中文文档
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服