标签: linker-errors

使用FreeImage时,Android NDK链接器错误"未定义对std :: ios_base的引用"

我试图静态链接Android NDK的libfreeimage.a的开放框架构建(使用native-activity示例作为模板).

当我编译和链接我的项目时,我得到了很多链接器错误:

../../../lib/ndk/armeabi-v7a/libfreeimage.a(ImfTimeCodeAttribute.o): In function global constructors keyed to ImfTimeCodeAttribute.cpp': ImfTimeCodeAttribute.cpp:(.text+0x28): undefined reference tostd::ios_base::Init::Init()'

我相信这是一个范围问题,可以通过在代码中添加命名空间或在gcc上使用g ++来解决.我认为-lstdc ++会解决问题,但事实并非如此.

任何帮助将不胜感激.

Android.mk:


LOCAL_PATH := $(call my-dir)/tmp

include $(CLEAR_VARS)

LOCAL_MODULE := androidapp

LOCAL_CFLAGS := -DFREEIMAGE_LIB\
                -DANDROID_NDK \
                -DDISABLE_IMPORTGL \
                -mfpu=vfp -mfloat-abi=softfp \
                -ffast-math -O3 -DFPM_ARM

LOCAL_LDLIBS := -llog -landroid -lEGL -lGLESv1_CM -lstdc++ -ldl
LOCAL_STATIC_LIBRARIES := android_native_app_glue

LOCAL_LDLIBS += ../../../lib/ndk/armeabi-v7a/libfreeimage.a

LOCAL_ARM_MODE := arm

SRC-FILES := $(wildcard tmp/*.c*)
SRC-FILES := $(SRC-FILES:tmp/%=%)
LOCAL_SRC_FILES += $(SRC-FILES)

APP_OPTIM := release
APP_ABI := armeabi-v7a

include $(BUILD_SHARED_LIBRARY)

$(call import-module,android/native_app_glue)

android linker-errors freeimage android-ndk

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

在MyProject_p.obj中C++链接错误未解析的外部符号

我正在尝试构建一个VC++项目,我得到这些LINK错误:

2>MyProject_p.obj : error LNK2001: unresolved external symbol _CStdStubBuffer2_Release@4
2>MyProject_p.obj : error LNK2001: unresolved external symbol _NdrStubForwardingFunction@16
2>MyProject_p.obj : error LNK2001: unresolved external symbol _IUnknown_Release_Proxy@4
2>MyProject_p.obj : error LNK2001: unresolved external symbol _IUnknown_AddRef_Proxy@4
2>MyProject_p.obj : error LNK2001: unresolved external symbol _IUnknown_QueryInterface_Proxy@12
2>MyProject_p.obj : error LNK2001: unresolved external symbol _NdrOleFree@4
2>MyProject_p.obj : error LNK2001: unresolved external symbol _NdrOleAllocate@4
Run Code Online (Sandbox Code Playgroud)

这是一个庞大的项目,有很多依赖项目 - 我已经在解决方案中添加了它们,并且它们都构建得很好.
我已经在上述实体的整个解决方案中进行了搜索,例如'CStdStubBuffer2'没有结果.我确实在MyProject_p.obj中找到了它们以及其他不可读的项目,但我不知道该怎么做.我看了类似的问题,但找不到任何可以帮助我的东西.有人能告诉我在哪里可以解决这个问题吗?谢谢.

c++ linker-errors

4
推荐指数
2
解决办法
1697
查看次数

C++ 链接器错误:未定义的引用仅在优化构建时

在链接优化的目标文件时,而不是在链接未优化的目标文件时,我才会收到未定义的引用链接器错误。我不明白问题是什么或可能是什么。

这是我未优化的构建:

构建文件:../COMPASS.cpp
调用:GCC C++ 编译器
g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"COMPASS.d" -MT"COMPASS.d" -o"COMPASS.o" “../COMPASS.cpp”
完成的建筑:../COMPASS.cpp

构建文件:../PSA.cpp
调用:GCC C++ 编译器
g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"PSA.d" -MT"PSA.d" -o"PSA.o" “../PSA.cpp”
完成的建筑:../PSA.cpp

构建文件:../SAR.cpp
调用:GCC C++ 编译器
g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp -MMD -MP -MF"SAR.d" -MT"SAR.d" -o"SAR.o" “../SAR.cpp”
完成的建筑:../SAR.cpp

构建文件:../constraints.cpp
调用:GCC C++ 编译器
g++ -O0 -g3 -pg -Wall -c -fmessage-length=0 -Wno-sign-compare -fopenmp …

c++ linker build-process linker-errors undefined-reference

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

指定的文件是无法识别或不支持的二进制格式

我从http://www.arcsynthesis.org/gltut/下载了教程(0.3.8),然后根据说明我使用premake4.exe来购买visual studio 2010项目(premake4 vs2010)并且它工作正常,但是当我尝试运行一些例子,我得到错误信息

指定的文件是无法识别或不支持的二进制格式

在此输入图像描述

你能告诉我为什么吗?

opengl compiler-errors linker-errors visual-studio-2010

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

与静态库链接时未定义的引用,但与 src 编译时链接成功

我正在尝试使用 Boost::Test 为该库创建一个 C 库和一个 C++ 测试程序。我在这个问题中发布的代码是我的代码的简化,它显示了完全相同的问题。请帮忙!

这是目录结构。 childlib是我正在尝试创建的库,并且test是测试程序。

> tree
.
`-- src
    |-- main
    |   |-- c
    |   |   `-- childlib.c
    |   |-- childlib.h
    |   `-- makefile
    `-- test
        |-- cpp
        |   `-- test.cpp
        `-- makefile

5 directories, 5 files
Run Code Online (Sandbox Code Playgroud)

我可以childlib成功地制作成一个静态库:

> cd src/main    
> make
gcc -c -fPIC -o c/childlib.o c/childlib.c
ar rcs libchildlib.a c/childlib.o
ranlib libchildlib.a
Run Code Online (Sandbox Code Playgroud)

但是我无法通过链接来制作我的测试程序:

> cd ../test/
> make
g++ -I. -I../main -Imy_boost_install_dir/include -c -std=c++11 -o cpp/test.o cpp/test.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ makefile linker-errors

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

如何在 CMake 中链接第三方库 (LibUSB)

我正在尝试在项目中使用 LibUSB。但是,每当我尝试使用基本的 libUSB 函数时,都会出现以下错误:

...src/main/main.cpp.o: In function `main':
...src/main/main.cpp:10: undefined reference to `libusb_init'
...src/main/main.cpp:11: undefined reference to `libusb_set_debug'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

安装了 LibUSB-devel 包(我在 Fedora 22 上)并且我的 IDE KDevelop 找到并识别标头,一旦您添加了 import 语句,它就会提供 LibUSB 代码完成。我的 IDE 或 CMake(我的构建系统)中没有任何自定义包含行,所以我想知道我需要做什么才能让 CMake 找到 LibUSB 标头。

这是 的内容main.cpp,以防万一我搞砸了:

#include <iostream>
#include <libusb-1.0/libusb.h>

int main(int argc, char **argv) {
      libusb_init(NULL);
      libusb_set_debug(NULL, LIBUSB_LOG_LEVEL_WARNING);

      /*snip*/

      std::cout << "Hello, world! PTPID="  << std::endl;
      return 0;
}
Run Code Online (Sandbox Code Playgroud)

以下是CMakeLists.txt
../

cmake_minimum_required(VERSION 2.8.11)
set(CMAKE_CXX_FLAGS …
Run Code Online (Sandbox Code Playgroud)

c++ cmake linker-errors

4
推荐指数
2
解决办法
1万
查看次数

代码生成失败:“p2”中无法识别标志“-FitObjData”

在将 libpng 静态库添加到我的项目以与 pngwriter 一起使用后,我收到此错误“'p2'中无法识别的标志'-FitObjData'”。我该如何解决这个错误,它告诉我什么?我正在用 VC10 编译。

c++ linker-errors visual-studio

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

查找“未定义引用”错误的根本原因

我试图了解为什么undefined reference在链接过程中出现错误:

/home/amirgon/projects/esp8266/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-gcc -L/home/amirgon/projects/esp8266/esp-open-sdk/sdk/lib -T/home/amirgon/projects/esp8266/esp-open-sdk/sdk/ld/eagle.app.v6.cpp.ld -nostdlib -Wl,--no-check-sections -u call_user_start -Wl,-static -Wl,--start-group -lc -lgcc -lhal -lphy -lpp -lnet80211 -llwip -lwpa -lmain build/app_app.a -Wl,--end-group -o build/app.out
build/app_app.a(routines.o):(.text+0x4): undefined reference to `pvPortMalloc(unsigned int, char const*, int)'
Run Code Online (Sandbox Code Playgroud)

gcc 抱怨它找不到函数pvPortMalloc
但是,我可以确认此功能存在于libmain.a!

在上面的命令行中,libmain 被引用-lmain并且库路径设置为-L/home/amirgon/projects/esp8266/esp-open-sdk/sdk/lib. 当我从libmain.a该路径转储符号时,我可以找到pvPortMalloc标记为T,这意味着该符号位于文本(代码)部分:

/home/amirgon/projects/esp8266/esp-open-sdk/xtensa-lx106-elf/bin/xtensa-lx106-elf-nm -g /home/amirgon/projects/esp8266/esp-open-sdk/sdk/lib/libmain.a | grep pvPortMalloc
         U pvPortMalloc
0000014c T pvPortMalloc
         U pvPortMalloc
Run Code Online (Sandbox Code Playgroud)

那么,我错过了什么吗?尽管函数存在于 libmain.a 中,但 gcc 找不到该函数的原因可能是什么?
如何进一步调试此错误?

c linker gcc elf linker-errors

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

等待 Docker 容器准备就绪

我有以下几点docker-compose.yml

version: '2'
services:
  server:
    build: .
    command: ["./setup/wait-for-postgres.sh", "tide_server::5432", "cd /app", "npm install", "npm run start"]
    ports:
      - 3030:3030
    links:
      - database
    depends_on:
      - database
  database:
    image: postgres
    environment:
      - "POSTGRES_USER=postgres"
      - "POSTGRES_PASSWORD=postgres"
      - "POSTGRES_DB=tide_server"
    ports:
      - 5432:5432
Run Code Online (Sandbox Code Playgroud)

我尝试遵循本教程并使用以下 shell 脚本来确定何时postgres准备就绪。

#!/bin/bash
# wait-for-postgres.sh

set -e

host="$1"
shift
cmd="$@"

until psql -h "$host" -U "postgres" -c '\l'; do
  >&2 echo "Postgres is unavailable - sleeping"
  sleep 1
done

>&2 echo "Postgres is up …
Run Code Online (Sandbox Code Playgroud)

postgresql linker-errors docker dockerfile docker-compose

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

如何将OCaml对象文件与Core模块链接?

我有简单的程序,它使用Core.Std模块中的函数,例如:

open Core.Std
let _ = List.last [1;2;3]
Run Code Online (Sandbox Code Playgroud)

我可以通过ocamlfind或编译和链接它ocamlbuild:

ocamlfind ocamlc -package core -linkpkg -thread app.ml 
ocamlbuild -use-ocamlfind -pkgs core -tag thread app.native
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用"普通"OCaml编译器编译和链接此类文件:

ocamlc -c -I ~/.opam/system/lib/core_kernel/ -I ~/.opam/system/lib/core/ app.ml 
ocamlc ~/.opam/system/lib/core_kernel/core_kernel.cma ~/.opam/system/lib/core/core.cma app.cmo 
Run Code Online (Sandbox Code Playgroud)

上述命令的最后一行给出以下错误:

File "_none_", line 1:
Error: Error on dynamically loaded library: /home/maciej/.opam/system/lib/stublibs/dllcore_kernel_stubs.so: /home/maciej/.opam/system/lib/stublibs/dllcore_kernel_stubs.so: undefined symbol: caml_ba_alloc
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

ocaml linker-errors ocaml-core

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