相同的代码,mac上运行不了win上能运行,如何解决?(标签-xcode)

img

img


vscode报错:

img


为什么相同的代码,mac上的xcode,vscode和ubuntu都运行不了但是win上能运行
怎么样才能在mac上运行这串代码?

https://www.5axxw.com/questions/content/rk7p54

你这个代码有点问题 第10行 如果找不到str 为null 这个时候去cpy 有问题 先把第10行去掉试试

str是一个字符指针,得先申请内存,用到malloc函数,然后是strcpy函数前判断源字符串是否为空

str指针要先开内存

根据错误提示 "undefined reference to `WinMain@16'",可以看出这是一个链接器错误,也就是在链接阶段找不到 WinMain 函数。WinMain 是 Windows 桌面应用程序的入口点,所以很可能是因为编译器选择了 Windows 的编译模式,而你想要编译的是 Mac 或者 Linux 环境下的代码。

你需要检查你在 Mac 上使用的编译器是否正确,以及是否选择了正确的编译选项。你可以在 VS Code 中打开终端,切换到你的代码所在目录,运行以下命令:

gcc -o hello hello.c


这将会使用 GCC 编译器将 hello.c 文件编译为可执行文件 hello。如果你在 Mac 上还没有安装 GCC 编译器,可以使用 Homebrew 进行安装。

另外,你的代码中使用了 Windows 特有的头文件和函数,例如 <windows.h> 和 Sleep() 函数,这些代码也需要进行适当的修改才能在 Mac 上编译运行。
引用gpt

以下答案基于ChatGPT与GISer Liu编写:

这段代码的问题在于第三行的头文件名 stdio.h 中的 . 被误写成了空格。应该将其修改为 #include <stdio.h>

修正后的代码如下:

c

#include <stdio.h>
#include <string.h>

int main(void) {
    char y = 'I';
    int num = 0;
    char x[] = "HI! XIDIAN";
    char *str;
    while (strchr(x, y) != NULL) {
        num++;
        str = strchr(x, y);
        strcpy(x, (str + 1));
    }
    printf("%d", num);
    return 0;
}

该代码应该可以在 Mac 上正常运行。如果还有问题,可以提供具体的错误信息或者表现来帮助排查。


解决mac上的代码不能运行,可以使用Xcode来构建mac应用,Xcode是一款Mac OS X和iOS应用程序开发工具,使用Xcode可以让mac下的代码拥有和Windows下一样的运行环境。使用Xcode不但能编译和调试你的代码,而且还可以把mac上的程序打包成可执行文件pc安装卸载,等多种应用。
也有可能是由于mac和win系统的差异导致的,您可以尝试使用Xcode来构建代码,以确保代码在mac和win系统上都能正常运行。此外,您还可以尝试检查代码中是否存在系统相关的差异,并进行相应的修改。

那就不要用string的函数,直接字符串处理

#include <stdio.h>
int main()
{
    char ch = 'I';
    char s[] = "HI!XIDIAN";
    int num = 0,i=0;
    while(s[i] != 0)
    {
        if(s[i] == ch)
            num++;
    }
    printf("%d",num);
}

方案来自 梦想橡皮擦 狂飙组基于 GPT 编写的 “程秘”


这种错误信息通常是由于不兼容的二进制文件或库文件导致的。可能的原因是您的代码是由Win平台上的编译器编译的,并且使用了Win特定的库文件或API,而这些在Mac上并不存在或者不兼容。

为了解决这个问题,您可以尝试以下几个步骤:

  • 检查您的编译器和库文件是否在Mac平台上可用,并且版本是否与Win平台上使用的相同。

  • 如果您的代码依赖于特定的API或库文件,您可能需要安装或重新编译这些文件以适用于Mac平台。或者您可以尝试使用跨平台的库,如Boost或Qt,以确保您的代码在不同的操作系统上都能正常工作。

  • 如果您的代码是由不同的编译器或不同的版本的编译器编译的,请尝试使用相同的编译器或版本,或者使用可以在多个平台上运行的编译器,如GCC或Clang。

  • 如果您无法解决此问题,请尝试使用Mac平台上的调试器调试程序,以确定哪些库或API导致了问题。