举报

VScode用MSVCx64编译使用EasyX库的cpp文件出错,求大佬指点

0

我同时下了VS2017,easyX库安装了,能用,也能编译、运行同一个cpp文件(即Gomoku.cpp)

VScode使用的是VS2017的编译程序,按照https://code.visualstudio.com/docs/cpp/config-msvc安装

也用VScode测试了不调用easyX的另外cpp文件,例如helloworld程序,能正常编译、运行

Gomoku.cpp在VScode中编译前没有红色波浪下划线,也能正常通过VScode跳转至graphics.h的声明

以下为编译Gomoku.cpp时的出错,摘自终端:

> Executing task: cl.exe /Zi /EHsc /Fe: d:\Code_C++\Gomoku\Gomoku.exe d:\Code_C++\Gomoku\Gomoku.cpp <

用于 x86 的 Microsoft (R) C/C++ 优化编译器 19.16.27035 版
版权所有(C) Microsoft Corporation。保留所有权利。

Gomoku.cpp
Microsoft (R) Incremental Linker Version 14.16.27035.0
Copyright (C) Microsoft Corporation. All rights reserved.

/debug
/out:d:\Code_C++\Gomoku\Gomoku.exe
Gomoku.obj
EasyXa.lib(Image.obj) : error LNK2019: 无法解析的外部符号 __imp__BitBlt@36,该符号在函数 "public: __thiscall IMAGE::IMAGE(class
IMAGE const &)" (??0IMAGE@@QAE@ABV0@@Z) 中被引用
EasyXa.lib(EasyX.GraphWnd.obj) : error LNK2001: 无法解析的外部符号 __imp__BitBlt@36
EasyXa.lib(EasyX.DrawOnWnd.obj) : error LNK2001: 无法解析的外部符号 __imp__BitBlt@36
EasyXa.lib(EasyX.ImageFunc.obj) : error LNK2001: 无法解析的外部符号 __imp__BitBlt@36
EasyXa.lib(Image.obj) : error LNK2019: 无法解析的外部符号 __imp__CreateCompatibleDC@4,该符号在函数 "public: __thiscall IMAGE::IMAGE(class IMAGE const &)" (??0IMAGE@@QAE@ABV0@@Z) 中被引用
EasyXa.lib(EasyX.InputBox.obj) : error LNK2001: 无法解析的外部符号 __imp__CreateCompatibleDC@4
EasyXa.lib(Image.obj) : error LNK2019: 无法解析的外部符号 __imp__CreateFontIndirectA@4,该符号在函数 "public: __thiscall IMAGE::IMAGE(int,int)" (??0IMAGE@@QAE@HH@Z) 中被引用

……………(省略类似的一大串)

EasyXa.lib(EasyX.GdiPlus.obj) : error LNK2019: 无法解析的外部符号 __imp__CoInitialize@4,该符号在函数 "void __cdecl GdiPlus::Startup(void)" (?Startup@GdiPlus@@YAXXZ) 中被引用
d:\Code_C++\Gomoku\Gomoku.exe : fatal error LNK1120: 87 个无法解析的外部命令
终端进程已终止,退出代码: 2

完全看不懂 求大佬出手相助

0

可以参考这篇文章:https://codebus.cn/sysci/vscode-with-msvc

根据你描述的情况,错误原因是没有链接相关的 Windows 库文件。

例如,在 VS2019 编译的 C++ 程序,链接时,通常会链接如下 lib 文件:
kernel32.lib; user32.lib; gdi32.lib; winspool.lib; comdlg32.lib; advapi32.lib; shell32.lib; ole32.lib; oleaut32.lib; uuid.lib; odbc32.lib; odbccp32.lib;
(请参考项目配置。例如 VS2019 的项目配置:Configuration Properties -> Linker -> Input -> Additional Dependencies)

但是我不清楚你的程序使用了哪些函数,没有办法明确告诉你需要链接哪些库文件。你可以尝试链接前面提到的部分或全部 .lib 文件试试。

ava
慢羊羊

2020-2-29

1 已解决  太感谢了 (*^▽^*) -  晚起的鸟儿h  2020-2-29
0

tasks.json加这几个,搞了我半天

{
    "tasks": [
        {
            "type": "shell",
            "label": "C/C++: cl.exe build active file",
            "command": "cl.exe",
            "args": [
                "/source-charset:utf-8", // 输入代码编码格式为utf-8
                "/Zi",
                "/EHsc",
                "/Fe:",
                "${fileDirname}\${fileBasenameNoExtension}.exe",
                "${file}",
            **    "user32.lib",**
**                "gdi32.lib",**
**                "shell32.lib",**
**                "ole32.lib",**
            ],
            "options": {
                "cwd": "${workspaceFolder}"
            },
            "problemMatcher": [
                "$msCompile"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ],
    "version": "2.0.0"
}

ava
花落初装o

2020-10-14

0

感谢~

ava
101

2022-12-10

技术讨论社区