标签: linker-errors

使用 Microsoft Visual C++ 6.0 解决 __imp__open 和其他类似命名函数的链接错误

使用 Microsoft Visual C++ 6.0 编译 C++ 时有时会出现这样的链接错误:

error LNK2001: unresolved external symbol __imp__close
error LNK2001: unresolved external symbol __imp__read
error LNK2001: unresolved external symbol __imp__lseek
error LNK2001: unresolved external symbol __imp__open

我使用谷歌搜索了很长时间但毫无结果后发现,我的修复是这样的:

不要禁用语言扩展。在“项目设置”对话框的“C/C++”选项卡中,确保未选中“禁用语言扩展”复选框。

函数 close、read、lseek、open 等不是 C 库的标准部分,并且使用#if !__STDC__in的条件编译会跳过这些声明<io.h>。如果您禁用语言扩展,就会发生这种情况。

c c++ visual-c++-6 linker-errors

1
推荐指数
1
解决办法
5035
查看次数

简单程序中的链接器错误:函数的多重定义

我的函数test被添加到两个不同的.cpp文件中,并且这些函数对于各自的文件是私有的,如下所示

test1.cpp

#include <iostream>

using namespace std;

void test()
{
    cout << "test" << endl;
}
Run Code Online (Sandbox Code Playgroud)

test2.cpp

#include <iostream>

using namespace std;

void test()
{
    cout << "test" << endl;
}
Run Code Online (Sandbox Code Playgroud)

main.cpp

#include <iostream>

using namespace std;



int main()
{

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

在链接期间我收到错误multiple definition of test()- 但考虑到这两个文件有自己的私有范围,这怎么可能!?如果我在每个文件的相应标头中包含函数原型我可以理解它.cpp,但在这个例子中没有这样的东西。

c++ linker linker-errors

1
推荐指数
1
解决办法
4808
查看次数

对 WinMain 的未定义引用失败

使用 GNU Make (v3.82.90) 构建应用程序时,我不断收到此链接器错误。我已经看过关于 SO 的其他答案,但答案仍然让我望而却步。

gcc -o build obj/teos_init.o obj/teos_event.o obj/teos_task.o obj/teos_sem.o obj
/teos_linkedlist.o obj/teos_log.o  -Iinc/pvt  -Iinc/pub -fmax-errors=3 -std=c11
c:/libs/mingw/bin/../lib/gcc/mingw32/4.9.3/../../../libmingw32.a(main.o):(.text.
startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
makefile:14: recipe for target 'build' failed
make: *** [build] Error 1
Run Code Online (Sandbox Code Playgroud)

我的makefile就是这样...

INCDIR = inc/pvt inc/pub
SRCDIR = src
OBJDIR = obj
LIBDIR = lib

CC=gcc
CFLAGS := $(foreach d, $(INCDIR), -I$d) -fmax-errors=3 -std=c11

_SRC = teos_init.c teos_event.c teos_task.c teos_sem.c teos_linkedlist.c teos_log.c
_OBJ := $(subst $(SRCDIR),$(OBJDIR),$(_SRC:%.c=%.o)) …
Run Code Online (Sandbox Code Playgroud)

c linker-errors gnu-make winmain

1
推荐指数
1
解决办法
3164
查看次数

Windows 中的 Qt 库链接错误

项目在 Linux 上构建良好,但在 Windows 中链接有问题。

第一期:

LNK2019: unresolved external symbol ...
LNK1120: 21 unresolved externals
Run Code Online (Sandbox Code Playgroud)

.pro 文件包含:

isEmpty(IDE_BUILD_TREE): IDE_BUILD_TREE = ../../qt-creator-debug
LIBS += -L$${IDE_BUILD_TREE}/lib/qtcreator/plugins -lMyLibrary
Run Code Online (Sandbox Code Playgroud)

笔记。 在构建之前MyLibrary部署到$${IDE_BUILD_TREE}/lib/qtcreator/plugins。使用 Qt 5.10.1 和 MSVC 2015 构建。

这里的问题/技巧是什么?怎么解决?


第二期:

在库.pro文件VERSION中定义了变量并且生成的库具有 name MyLibrary1.lib。此后我得到错误:

:-1: error: LNK1181: cannot open input file 'MyLibrary.lib'
Run Code Online (Sandbox Code Playgroud)

在这里解决问题的更好方法是:删除VERSION还是修复.pro文件?如何?


第三期:

另一个链接错误:

mydialog.obj:-1: error: LNK2001: unresolved external symbol 
"struct QMetaObject const MyLibrary::staticMetaObject" 
(?staticMetaObject@MyLibrary@@3UQMetaObject@@B)
Run Code Online (Sandbox Code Playgroud)

由于代码中的以下行而发生错误(注释掉时消失):

mydialog.cpp:

    QMetaEnum myEnum = QMetaEnum::fromType<MyLibrary::MyEnumClass>();
Run Code Online (Sandbox Code Playgroud)

mylibrary.h: …

c++ windows qt qmake linker-errors

1
推荐指数
1
解决办法
1244
查看次数

如何链接从 Homebrew 安装的 mysql-client 与柴油 cli?

我一直在尝试使用 安装 Rust Diesel CLI 工具cargo install diesel_cli,但安装失败并出现链接错误

ld: library not found for -lmysqlclient
 clang: error: linker command failed with exit code 1 
(use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

我安装使用自制的MySQL客户端:brew install mysql-client。在安装过程中,我收到以下警告:

mysql-client is keg-only, which means it was not symlinked into /usr/local,
because conflicts with mysql.
If you need to have mysql-client first in your PATH run:
  echo 'export PATH="/usr/local/opt/mysql-client/bin:$PATH"' >> ~/.bash_profile
For compilers to find mysql-client you may need to set:
  export LDFLAGS="-L/usr/local/opt/mysql-client/lib"
  export CPPFLAGS="-I/usr/local/opt/mysql-client/include” …
Run Code Online (Sandbox Code Playgroud)

mysql macos linker-errors rust

1
推荐指数
1
解决办法
1850
查看次数

对 `sin' 的未定义引用,即使我使用 &lt;math.h&gt; 和 -lm

我注意到当我使用sin内部函数时,编译器无法识别它,这是一个例子:

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

float sinus(float a){
    return sin(a);}

int main(int argc, char **argv)
{
    double a = sinus(2);
    printf("%f \n", sin(2));
    printf("%f", a);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我直接在 main 中使用它,它工作正常,但在用户定义的函数中,它给了我这个错误undefined reference to sin

对于编译,我使用gcc -Wall -lm -lc -lgcc -o "%e" "%f".

c linker-errors undefined-reference

1
推荐指数
1
解决办法
578
查看次数

C++ 创建头文件时,多个重载函数实例与参数列表匹配

在我的程序的主文件中,我有以下声明

int main()
{
    Customer c;
    Part p;
    Builder b;
    auto partsVec =  readpartFile();
    auto customerVec = readcustomerFile();
    auto builderVec = readbuilderFile();

    fexists("Parts.txt");
    complexity(c, partsVec);
    robotComplexity(partsVec,customerVec);
    writeFile(buildAttempt(b, complexity(c, partsVec), variability(customerVec, builderVec)));
}
Run Code Online (Sandbox Code Playgroud)

我的头文件由以下内容组成

vector<Part> readpartFile();

vector<Customer> readcustomerFile();

vector<Builder> readbuilderFile();

float complexity(const Customer& c, const std::vector<Part>& parts);

void robotComplexity(vector<Part> vecB, vector<Customer> vecC);

double variability(const vector<Customer>& customerList, const vector<Builder>& builderList);

vector<double> buildAttempt(Builder b, double variaiblity, double complexityRobot);

void writeFile(vector<double> build);
Run Code Online (Sandbox Code Playgroud)

除了 robotsComplexity 之外,所有功能都链接在一起。我在 main 中声明此函数会产生以下错误。

重载函数“robotComplexity”的多个实例与参数列表匹配: -- function "robotComplexity(const std::vector> &parts, const …

c++ linker-errors header-files forward-declaration function-signature

1
推荐指数
1
解决办法
4095
查看次数

如何安装相关的 C++ 库以避免链接器命令失败?

我最近尝试编译一个 C++ 程序,但发现它给出了这个错误:

Undefined symbols for architecture x86_64:
  "std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
      std::__1::ctype<char> const& std::__1::use_facet<std::__1::ctype<char> >(std::__1::locale const&) in test-c64d7d.o
  "std::__1::ios_base::getloc() const", referenced from:
      std::__1::basic_ios<char, std::__1::char_traits<char> >::widen(char) const in test-c64d7d.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from:
      std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(unsigned long, char) in test-c64d7d.o
  "std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
      std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in test-c64d7d.o
  "std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, …
Run Code Online (Sandbox Code Playgroud)

c++ x86-64 linker-errors undefined-symbol macos-catalina

1
推荐指数
1
解决办法
86
查看次数

无法将 macOS-arm64 的库与 macOS-arm64 的可执行文件链接


\n我在 **Monterey M1 MacBook** 上创建构建系统时遇到一些问题:\n

到目前为止,我有一个可用的 Makefile 来构建和链接库。
\n(简化:g++ -c所有 .cpp 文件转换为 .o 文件 \xe2\x86\x92 ar -r <.o files> libmyLibrary.a>\n
\xe2\x86\x92效果很好

\n

问题:
\n当我尝试构建一个使用所述libmyLibrary.a. 源文件的编译工作正常,但我收到以下(看似无意义的)链接器警告:

\n
ld: warning: ignoring file /Path/to/lib/libmyLibrary.a,\nbuilding for macOS-arm64 but attempting to link with file built for macOS-arm64\n
Run Code Online (Sandbox Code Playgroud)\n

\xe2\x86\x92 我 ofc 然后得到一些Undefined symbols for architecture arm64: ... <stuff from library> referenced from: <stuff from executable>

\n

为与图书馆相同的目标而建设怎么会成为问题呢?

\n

c++ g++ linker-errors static-libraries linker-warning

1
推荐指数
1
解决办法
1888
查看次数

堆栈链接错误问题

编译器在运行程序时给出了这些错误 -

  "Stack<int>::push(int&)", referenced from:
      _main in main.o
  "Stack<int>::~Stack()", referenced from:
      _main in main.o
      _main in main.o
  "Stack<int>::Stack()", referenced from:
      _main in main.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

编译时我没有错误.

代码如下 -

/*
 *  Stack.h
 *  Stack
 *
 *  Created by Sterling McLeod on 2/1/11.
 *  Copyright 2011 University of North Carolina at Charlotte. All rights reserved.
 *
 */
#ifndef STACK_H
#define STACK_H

#include <exception>

template<typename T>
class Stack {

public:


    class EmptyTreeException : public std::exception …
Run Code Online (Sandbox Code Playgroud)

c++ stack runtime-error g++ linker-errors

0
推荐指数
1
解决办法
167
查看次数