| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1515 人关注过本帖
标题:Windows API一个小程序的困惑
只看楼主 加入收藏
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:8 
Windows API一个小程序的困惑
#include<windows.h>
/* *************************************

* 功能:获取系统目录信息,并存储到文件中

*************************************** */
int main(int argc,TCHAR argv[])
{
    //文件句柄
    HANDLE hFile;
    DWORD dwWritten;
    TCHAR szSystemDir[MAX_PATH]; //字符数组,用于存储系统目录
    GetSystemDirectory(szSystemDir,MAX_PATH);//获取系统目录
    hFile=CreateFile("systemroot.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);//创建文件systemroot.txt
    if(hFile!=INVALID_HANDLE_VALUE)
    {
        if(!WriteFile(hFile,szSystemDir,lstrlen(szSystemDir),&dwWritten,NULL))//将系统目录,系统信息写入文件中
        {return GetLastError();}
}
    CloseHandle(hFile);//关闭文件,返回
    return 0;
}
编译通过,但是运行的时候出错;提示的信息如下:
error LNK2001: unresolved external symbol _WinMain@16
Debug/was.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

was.exe - 2 error(s), 0 warning(s)
在VS2012中写代码的时候,这句代码显示出错 hFile=CreateFile("systemroot.txt",GENERIC_WRITE,0,NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL)
主要是加颜色部分提示出错,提示信息:Error:"const char *"类型实参与"LPCWSTR"类型的形参不兼容
搜索更多相关主题的帖子: Windows include 信息 
2013-06-10 19:19
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
_WinMain

gui应用程序,你写成cui控台程序了

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-06-10 19:58
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
不是在开始的时候创建一个win32控制台应用程序,然后在应用设置里面选择为Windows应用程序吗?(基于VS2012创建)

思考赐予新生,时间在于定义
2013-06-10 20:04
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 2楼 yuccn
我是使用VS2012的,先创建一个Win32控制台应用程序,然后在应用程序设置里面选择为Windows应用程序,新创建一个源文件,然后把代码写进去
截图如下:
图片附件: 游客没有浏览图片的权限,请 登录注册

然后调试的时候就出错了,提示出错信息如下:
 error C2664: “CreateFileW”: 不能将参数 1 从“const char [15]”转换为“LPCWSTR”
1>          与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换。
这是为什么?

思考赐予新生,时间在于定义
2013-06-10 20:13
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:5 
error C2664: “CreateFileW”: 不能将参数 1 从“const char [15]”转换为“LPCWSTR”

用WCHAR ,用unicode

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-06-10 20:20
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:0 
吧char改成WCHAR就行了
或者你把CreateFile改成CreateFileA 就行了,不明白就百度一下他们的差别

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-06-10 20:22
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
回复 6楼 yuccn
我把CreateFile多加了一个A之后,编译通过了,但是运行之后就出错了
图片附件: 游客没有浏览图片的权限,请 登录注册

如果不加A的话,只是把TCHAR改为WCHAR,那CreateFile里面的第一个参数则提示出错
图片附件: 游客没有浏览图片的权限,请 登录注册


思考赐予新生,时间在于定义
2013-06-10 21:49
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
程序代码:
#include<windows.h>
/* *************************************

* 功能:获取系统目录信息,并存储到文件中

*************************************** */
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
                   LPSTR lpCmdLine,     int nCmdShow)
{
    //文件句柄
    HANDLE hFile;
    DWORD  dwWritten;
    TCHAR  szSystemDir[MAX_PATH]; //字符数组,用于存储系统目录

    GetSystemDirectory(szSystemDir, MAX_PATH);//获取系统目录
    hFile = CreateFile(TEXT("systemroot.txt"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);//创建文件systemroot.txt

    if (hFile != INVALID_HANDLE_VALUE)
    {
        if (!WriteFile(hFile, szSystemDir, lstrlen(szSystemDir), &dwWritten, NULL))//将系统目录,系统信息写入文件中
        {
            return GetLastError();
        }
    }
    CloseHandle(hFile);//关闭文件,返回
    return 0;
}


[fly]存在即是合理[/fly]
2013-06-11 14:25
love云彩
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:青藏高原
等 级:贵宾
威 望:53
帖 子:3663
专家分:11416
注 册:2012-11-17
收藏
得分:0 
谢谢版主

思考赐予新生,时间在于定义
2013-06-12 03:11
快速回复:Windows API一个小程序的困惑
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027062 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved