Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法在C++;Visual Studio 由于某种原因,我不能再在C++ CLR控制台应用程序中编译C文件。它在没有clr支持的情况下工作过,我也将我的项目转换为编译为/TP,但仍然不工作。任何帮助都将不胜感激 错误 斯诺基尔 斯诺基尔_C++_C_Visual Studio_Visual Studio 2015_Clr - Fatal编程技术网

无法在C++;Visual Studio 由于某种原因,我不能再在C++ CLR控制台应用程序中编译C文件。它在没有clr支持的情况下工作过,我也将我的项目转换为编译为/TP,但仍然不工作。任何帮助都将不胜感激 错误 斯诺基尔 斯诺基尔

无法在C++;Visual Studio 由于某种原因,我不能再在C++ CLR控制台应用程序中编译C文件。它在没有clr支持的情况下工作过,我也将我的项目转换为编译为/TP,但仍然不工作。任何帮助都将不胜感激 错误 斯诺基尔 斯诺基尔,c++,c,visual-studio,visual-studio-2015,clr,C++,C,Visual Studio,Visual Studio 2015,Clr,tagPROCESSENTRY32中的szExeFile声明为TCHAR,在编译时将字符集设置为“未设置”或“多字节”。将项目设置中的字符集设置为使用Unicode字符集解决此问题 另外,使用wcscmp来比较WCHAR类型。tagPROCESSENTRY32中的szExeFile声明为TCHAR,在编译时将字符集设置为“未设置”或“多字节”。将项目设置中的字符集设置为使用Unicode字符集解决此问题 另外,使用wcscmp来比较WCHAR类型。错误消息很清楚:您在这一行有一个错误: if (

tagPROCESSENTRY32
中的
szExeFile
声明为
TCHAR
,在编译时将字符集设置为“未设置”或“多字节”。将项目设置中的字符集设置为使用Unicode字符集解决此问题


另外,使用
wcscmp
来比较WCHAR类型。

tagPROCESSENTRY32
中的
szExeFile
声明为
TCHAR
,在编译时将字符集设置为“未设置”或“多字节”。将项目设置中的字符集设置为使用Unicode字符集解决此问题


另外,使用
wcscmp
来比较WCHAR类型。

错误消息很清楚:您在这一行有一个错误:

if (strcmp(pEntry.szExeFile, filename) == 0)

因为您的参数不是预期的
char*
类型,而是
WCHAR*
类型。您应该改为使用,这基本上是相同的函数,但使用的是
wchar\u t*
类型。

错误信息很清楚:您在这一行有一个错误:

if (strcmp(pEntry.szExeFile, filename) == 0)

因为您的参数不是预期的
char*
类型,而是
WCHAR*
类型。您应该改为使用,这基本上是相同的函数,但使用的是
wchar\u t*
类型。

您可以将wchar的每个实例更改为TCHAR,以便文本设置为“通用”,或者如前所述,将项目属性字符集更改为仅Unicode

    void killProcessByName(TCHAR *filename)
    /* ... */
    if (_tcscmp(pEntry.szExeFile, filename) == 0)  /* replaced strcmp */
    /* ... */
#include <windows.h>    /* needed in order to use TEXT() macro */
    /* ... */
    TCHAR *proccc = TEXT("firefox.exe");   /* TEXT() is a <windows.h> macro */
void killProcessByName(TCHAR*filename)
/* ... */
如果(_tcscmp(pEntry.szExeFile,filename)==0)/*替换了strcmp*/
/* ... */
#使用TEXT()宏时需要包含/*项*/
/* ... */
TCHAR*proccc=TEXT(“firefox.exe”);/*TEXT()是一个宏*/
如果涉及的函数不是WCHAR特定的,则在任何地方都使用TCHAR类型。这将允许项目设置生成ANSI/ASCII(未设置)或Unicode

请注意,Process32First和Process32Next使用TCHAR

这主要是针对传统的API函数,因为Windows 2000和更高版本的API函数在内部使用Unicode,根据需要将ANSI/ASCII转换为Unicode,而Windows NT和更早版本的API函数使用ANSI/ASCII

然而,通常许多或大多数文本文件(如源代码)是ANSI/ASCII而不是Unicode,在同一个程序中必须支持Unicode for Windows API,然后支持ANSI/ASCII for text files是很尴尬的,对于这些项目,我使用ANSI/ASCII


通过使用基于TCHAR的泛型类型,我可以与使用Unicode的项目和使用ANSI/ASCII的项目共享公共代码。

您可以将WCHAR的每个实例更改为TCHAR,以便文本设置为“泛型”,或者如前所述,将项目属性字符集更改为仅使用Unicode

    void killProcessByName(TCHAR *filename)
    /* ... */
    if (_tcscmp(pEntry.szExeFile, filename) == 0)  /* replaced strcmp */
    /* ... */
#include <windows.h>    /* needed in order to use TEXT() macro */
    /* ... */
    TCHAR *proccc = TEXT("firefox.exe");   /* TEXT() is a <windows.h> macro */
void killProcessByName(TCHAR*filename)
/* ... */
如果(_tcscmp(pEntry.szExeFile,filename)==0)/*替换了strcmp*/
/* ... */
#使用TEXT()宏时需要包含/*项*/
/* ... */
TCHAR*proccc=TEXT(“firefox.exe”);/*TEXT()是一个宏*/
如果涉及的函数不是WCHAR特定的,则在任何地方都使用TCHAR类型。这将允许项目设置生成ANSI/ASCII(未设置)或Unicode

请注意,Process32First和Process32Next使用TCHAR

这主要是针对传统的API函数,因为Windows 2000和更高版本的API函数在内部使用Unicode,根据需要将ANSI/ASCII转换为Unicode,而Windows NT和更早版本的API函数使用ANSI/ASCII

然而,通常许多或大多数文本文件(如源代码)是ANSI/ASCII而不是Unicode,在同一个程序中必须支持Unicode for Windows API,然后支持ANSI/ASCII for text files是很尴尬的,对于这些项目,我使用ANSI/ASCII


通过使用基于TCHAR的泛型类型,我可以与使用Unicode的项目和使用ANSI/ASCII的项目共享公共代码。

错误消息准确地告诉您错误所在
strcmp
接受一个
char*
,您给它一个
wchar\u t*
。您可能需要的是与strcmp基本相同的strcmp,只是它在
wchar\u t*
上工作。错误消息会准确地告诉您出了什么问题
strcmp
接受一个
char*
,您给它一个
wchar\u t*
。您可能想要的是基本上与strcmp相同的strcmp,只是它适用于
wchar\u t*
。您指的是ANSI,而不是ASCII。ANSI表示线程的字符编码,可以来自程序、用户或操作系统。这不太可能是ASCII码。@TomBlodget-我更新了答案以显示两者。看看。你是说ANSI,不是ASCII。ANSI表示线程的字符编码,可以来自程序、用户或操作系统。这不太可能是ASCII码。@TomBlodget-我更新了答案以显示两者。看一看。
if (strcmp(pEntry.szExeFile, filename) == 0)
    void killProcessByName(TCHAR *filename)
    /* ... */
    if (_tcscmp(pEntry.szExeFile, filename) == 0)  /* replaced strcmp */
    /* ... */
#include <windows.h>    /* needed in order to use TEXT() macro */
    /* ... */
    TCHAR *proccc = TEXT("firefox.exe");   /* TEXT() is a <windows.h> macro */