唐凌 发表于 2017-4-17 00:17:20

如何设置在VC编译的程序的文件厂商

貌似是要添加个.rc文件然后编译之,再和其他中间文件链接到可执行文件。xxx.rc该怎么写,编译参数又该怎么写呢?

Ayala 发表于 2017-4-17 10:29:07


set src=aaa
set res=bbb
set obj=%src%.obj %res%.obj ccc.obj
set path=xxx;%path%
set inc=
set UMLIBS=
set tag=/machine:ix86


rc /I"%inc%" %res%.rc
cvtres %tag% %res%.res

cl%inc% ...

link %obj% %UMLIBS% %tag% ....

0xAA55 发表于 2017-4-17 12:46:49

这个rc直接用VS的IDE来个“可视化操作”,搞一个“版本信息”的资源进去,填写以下表单然后编译为res就好。到时候丢给链接器就好。

cyycoish 发表于 2017-4-17 13:29:01






// Microsoft Visual C++ generated resource script.
//
#include "resource.h"

#define APSTUDIO_READONLY_SYMBOLS
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 2 resource.
//
#include "afxres.h"

/////////////////////////////////////////////////////////////////////////////
#undef APSTUDIO_READONLY_SYMBOLS

/////////////////////////////////////////////////////////////////////////////
// English (United States) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US

#ifdef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// TEXTINCLUDE
//

1 TEXTINCLUDE
BEGIN
    "resource.h\0"
END

2 TEXTINCLUDE
BEGIN
    "#include ""afxres.h""\r\n"
    "\0"
END

3 TEXTINCLUDE
BEGIN
    "\r\n"
    "\0"
END

#endif    // APSTUDIO_INVOKED


/////////////////////////////////////////////////////////////////////////////
//
// Version
//

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
      BLOCK "040904b0"
      BEGIN
            VALUE "CompanyName", "Macr Hard Crop."
            VALUE "FileDescription", "Advanced Hello world."
            VALUE "FileVersion", "1.0.0.1"
            VALUE "InternalName", "t0.exe"
            VALUE "LegalCopyright", "Copyright (C) MacroHard 2017"
            VALUE "OriginalFilename", "t0.exe"
            VALUE "ProductName", "Holla"
            VALUE "ProductVersion", "1.0.0.1"
      END
    END
    BLOCK "VarFileInfo"
    BEGIN
      VALUE "Translation", 0x409, 1200
    END
END

#endif    // English (United States) resources
/////////////////////////////////////////////////////////////////////////////



#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//


/////////////////////////////////////////////////////////////////////////////
#endif    // not APSTUDIO_INVOKED

唐凌 发表于 2017-4-17 14:49:27

cyycoish 发表于 2017-4-17 13:29
// Microsoft Visual C++ generated resource script.
//
#include "resource.h" ...

如果编译为驱动,FILE_TYPE啥的要改动么?

cyycoish 发表于 2017-4-17 14:52:53

tangptr@126.com 发表于 2017-4-17 14:49
如果编译为驱动,FILE_TYPE啥的要改动么?

不晓得,我没有用rc文件链接过驱动文件。先试试看。

唐凌 发表于 2017-4-17 15:06:16

cyycoish 发表于 2017-4-17 14:52
不晓得,我没有用rc文件链接过驱动文件。先试试看。

资源编译器错误。。。
RC1106: Invalid Option:-ologo

cyycoish 发表于 2017-4-17 15:11:33

tangptr@126.com 发表于 2017-4-17 15:06
资源编译器错误。。。
RC1106: Invalid Option:-ologo

你得先 rc.exe /r xxx.rc   生成 xxx.res然后 link 的输入接收 res 文件
再注意一下 resource.h 中的内容。

cyycoish 发表于 2017-4-17 15:14:43

cyycoish 发表于 2017-4-17 15:11
你得先 rc.exe /r xxx.rc   生成 xxx.res然后 link 的输入接收 res 文件
再注意一下 resource.h 中的 ...

rc 文件有错误 res 文件就不能生成。

唐凌 发表于 2017-4-17 15:20:09

cyycoish 发表于 2017-4-17 15:11
你得先 rc.exe /r xxx.rc   生成 xxx.res然后 link 的输入接收 res 文件
再注意一下 resource.h 中的 ...

唉,VS2010的IDE还是敲敲代码好,自定义编译参数的事情还是得靠批处理。。。
多谢各位了,设置驱动的文件厂商的事情搞定了,只不过还是靠批处理实现链接的,不知为何,VS2010编译的时候竟然还冒出个mt.exe报TRK0005的错误,说mt.exe失踪了【大概是我改了编译器位置的关系】

cyycoish 发表于 2017-4-17 15:23:32

tangptr@126.com 发表于 2017-4-17 15:06
资源编译器错误。。。
RC1106: Invalid Option:-ologo

RC1106错误可能是你的SDK版本问题。使用高版本的SDK内的资源编译器。
然后FileType应该不是什么关键问题,改变filetype的话在IDE UI中列表框内给了很多宏选项,你可以根据需要改一下。

cyycoish 发表于 2017-4-17 15:30:14

tangptr@126.com 发表于 2017-4-17 15:20
唉,VS2010的IDE还是敲敲代码好,自定义编译参数的事情还是得靠批处理。。。
多谢各位了,设置驱动的文件 ...

IDE 配置好了以后不变环境用起来相当舒服,一旦变了环境,改起配置来能烦死人。批处理只要有模版就好,不然的话每次自己编译都要去挑编译器参数,链接器参数,,,也能烦死人。:(

cyycoish 发表于 2017-4-17 15:38:00

如果你先装vs2008在装vs2010会导致各种各样的问题。因为vs2010安装过后没有把所有的配置全部改写为vs2010的配置。部分配置是按照vs2008来的。然后就会出现各种链接错误、COFF文件损坏,编译器找不到运行时库等等。。。不仅如此能导致千奇百怪的问题,vs2010安装完后打完sp1补丁也会出现各种各样的问题。vs2013各种bug,vs2015相对成熟但是占用资源特别厉害。vs2017就好多了。
MAC环境下也是一堆问题。这几个月xcode更新后,xcode的注释功能也毁灭了。然后用xcode对接其他非clang编译器通常是比登天还难的事情。

唐凌 发表于 2017-4-17 15:38:50

cyycoish 发表于 2017-4-17 15:30
IDE 配置好了以后不变环境用起来相当舒服,一旦变了环境,改起配置来能烦死人。批处理只要有模版就好,不 ...

我现在习惯用WDK的编译器。。。前面把VS里的编译器给替换掉了,换成WDK的编译器,然后因为缺了mt.exe不能生成可执行文件。。。
批处理可以定制编译参数,什么源文件需要什么宏可以定义的清清楚楚。。。

Ayala 发表于 2017-4-17 22:39:43

如果makefile就简单了!

SOURCES=aaa.c      \
      bbb.c      \
      aaa.rc

besteast 发表于 2018-9-16 17:46:46

:loveliness::loveliness::loveliness::loveliness::loveliness::loveliness::loveliness:
页: [1]
查看完整版本: 如何设置在VC编译的程序的文件厂商