错误:“未定义的引用`__imp_getopenfilenamea;'虽然我使用GCC -LCOMDLG32

发布于 2025-01-24 13:16:58 字数 1084 浏览 2 评论 0原文

我创建了一个名为“ demo.c”的文件。 这是代码:

#include <Windows.h>
#include <commdlg.h>
#include <stdio.h>

int FileDialog(char *path)
{
    OPENFILENAME ofn;
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.lpstrFile = path;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    return GetOpenFileName(&ofn);
}

int main(char argc, char *argv[])
{
    char szFile[MAX_PATH] = {0};
    if (FileDialog(szFile))
    {
        puts(szFile);
    }
    return 0;
}

然后我在CMD中输入“ GCC -LCOMDLG32 DEMO.C -O演示”。 但是结果是错误:

D:\MyProject\C_Programming\WindowsApiTest>gcc -lcomdlg32 demo1.c -o demo 
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\c\AppData\Local\Temp\ccqGNley.o:demo1.c:(.text+0x64): undefined reference to `__imp_GetOpenFileNameA'
collect2.exe: error: ld returned 1 exit status

那么为什么它报告错误?

我的操作系统是Win11,而我的GCC是TDM-GCC-64。

I creat a file named "demo.c".
Here is the code:

#include <Windows.h>
#include <commdlg.h>
#include <stdio.h>

int FileDialog(char *path)
{
    OPENFILENAME ofn;
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.lpstrFile = path;
    ofn.nMaxFile = MAX_PATH;
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    return GetOpenFileName(&ofn);
}

int main(char argc, char *argv[])
{
    char szFile[MAX_PATH] = {0};
    if (FileDialog(szFile))
    {
        puts(szFile);
    }
    return 0;
}

Then I enter "gcc -lcomdlg32 demo.c -o demo" in cmd.
But the result is error:

D:\MyProject\C_Programming\WindowsApiTest>gcc -lcomdlg32 demo1.c -o demo 
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:\Users\c\AppData\Local\Temp\ccqGNley.o:demo1.c:(.text+0x64): undefined reference to `__imp_GetOpenFileNameA'
collect2.exe: error: ld returned 1 exit status

So why do it report an error?

My operating system is win11, and my GCC is tdm-gcc-64.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

叫嚣ゝ 2025-01-31 13:16:58

谢谢Yano,解决了问题!

只需使用GCC Demo1.c -lcomdlg32 -o demo

Thank yano, the question was solved!

just usegcc demo1.c -lcomdlg32 -o demo

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文