int nNewImageSize=NThea.OptionalHeader.SizeOfImage+alig(nShellLen,SECTION_ALIG);
int nNewSizeofCode=NThea.OptionalHeader.SizeOfCode+alig(nShellLen,FILE_ALIG);
fseek(newfile,pNT,0);
NThea.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT].VirtualAddress=0;
NThea.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BOUND_IMPORT].Size=0;
NThea.OptionalHeader.SizeOfCode=nNewSizeofCode;
NThea.OptionalHeader.SizeOfImage=nNewImageSize;
NThea.FileHeader.NumberOfSections=nOldSectionNo+1;
NThea.OptionalHeader.AddressOfEntryPoint=NewSection.VirtualAddress;
//写入更新后的PE头结构
fwrite(&NThea,sizeof(IMAGE_NT_HEADERS),1,newfile);
printf("\t\tok.........!\n");
fclose(newfile);
fclose(rwFile);
return 1;
}
/*不知为何只能生成debug版本,生成release时总提示
E:\vc6\TEST\add_section\add_section.cpp(210) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'E:\8168\vc98\p2\src\P2\main.c', line 494)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.
附:参考文献:《黑客防线》《程序员》,, */
不知为何只能生成debug版本,生成release时总提示
E:\vc6\TEST\add_section\add_section.cpp(210) : fatal error C1001: INTERNAL COMPILER ERROR
(compiler file 'E:\8168\vc98\p2\src\P2\main.c', line 494)
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information
Error executing cl.exe.
命令行编译倒是没问题,等待高手支招。。。
最初由 llydd 发布 不知为何只能生成debug版本,生成release时总提示 E:\vc6\TEST\add_section\add_section.cpp(210) : fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'E:\8168\vc98\p2\src\P2\main.c', line 494) Please choose the Technical Support command on the Visual C++ Help menu, or open the Technical Support help file for more information ........
support.microsoft.com/kb/217164
BUG: You receive a "fatal error C1001" error message when you pass the return value of an intrinsic function as an argument to another function in Visual C++ 6.0 View products that this article applies to. Article ID : 217164 Last Review : September 30, 2005 Revision : 3.0 This article was previously published under Q217164 On This Page
SYMPTOMS
RESOLUTION
STATUS
MORE INFORMATION
Steps to reproduce the behavior SYMPTOMS Bad code is generated when you pass the return value of an intrinsic function as an argument to a function that takes a reference to an integer while using Global Optimizations (/Og) and Enable Intrinsic Functions (/Oi). In some situations, a C1001 compiler error occurs: fatal error C1001: INTERNAL COMPILER ERROR (compiler file 'E:\8168\vc98\p2\src\P2\main.c', line 494) Back to the top
RESOLUTION There are two workaround options: • Workaround 1: Disable intrinsic optimizations. Add /Oi- to your compiler switches after any other switches that start with /O. • Workaround 2: Use #pragma function to prevent the use of individual intrinsic functions.
Back to the top
STATUS Microsoft has confirmed that this is a bug in the Microsoft products that are listed in the "Applies to" section. This bug was corrected in Visual Studio 6.0 Service Pack 3.
For more information about Visual Studio service packs, click the following article numbers to view the articles in the Microsoft Knowledge Base: 194022 (http://support.microsoft.com/kb/194022/) Visual Studio 6.0 service packs, what, where, why 194295 (http://support.microsoft.com/kb/194295/) How to tell that a Visual Studio service pack is installed Back to the top
MORE INFORMATION Steps to reproduce the behavior Compile options: /Og /Oi or /O2 Workaround 1 compile options: /O2 /Oi- #include <stdio.h> #include <math.h>
int f(const int &a, const int &b) { return a * b; }
// uncomment for workaround #2 to disable the abs intrinsic // #pragma function(abs)
int main() {
int x = -45, y = 2;
// The result of abs(), an intrinsic, gets passed to // a fn that takes arg of type reference to int printf("Result of f() is %i\n", f(abs(x), y));
return 0; }
// uncomment for workaround #2 to re-enable the abs intrinsic // #pragma intrinsic(abs)