标签: static-libraries

静态库文件中的资源 - MFC

MFC 似乎无法启动我的对话框,因为它找不到资源标识符。对话框在一个单独的 .lib 文件中(所以它有一个单独的 .rc 文件,我假设它与我的 .exe 文件中的文件有冲突)。我应该如何处理这种情况?

c++ resources mfc static-libraries

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

取消归档静态库并获取源代码的可能性?

我计划在 iOS 中创建自定义框架,并提供给其他用户使用该框架,但我想保护用户的源代码。

经过一些研究,我发现静态库是实现它的方法之一,但我只想确认是否有可能取消归档 .a 文件并获取源代码。

请让我知道在创建静态库时要遵循的最佳实践。

objective-c static-libraries ios5

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

将静态库链接到另一个静态库

我正在尝试使用 scons 将静态库 [1] 链接到另一个静态库 [2]。

不幸的是,发出的对“ar”的调用从不包含任何到库 [1] 的路径。

根据这篇文章如何将两个“ar”静态库合并为一个,应该可以将档案合并为一个。

在这里通常调用 CheckLibWithHeader 是不够的吗?

此致

scons static-libraries

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

从静态库 linux C++ dlopen 动态库

我有一个链接静态库 (.a) 的 linux 应用程序,该库使用 dlopen 函数加载动态库 (.so)

如果我将静态库编译为动态库并将其链接到应用程序,则 dlopen 它将按预期工作,但如果我如上所述使用它,则不会。

静态库不能使用 dlopen 函数加载共享库吗?

谢谢。

c++ linux static-libraries dlopen

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

整体归档和无整体归档选项的链接问题

我尝试使用-whole-archive/-no-whole-archive选项进行链接。gcc 是 4.1.2。当我尝试:

g++ ...... -Wl, -whole-archive libA.a -Wl, -no-whole-archive libB.a ...
Run Code Online (Sandbox Code Playgroud)

它说-whole-archive并且-no-whole-archive无法识别。当我替换-whole-archive--whole-archive, 并且与 相同时no-whole-archive,它说

error: unrecognized command line option "-fwhole-archive"
error: unrecognized command line option "-fno-whole-archive"
Run Code Online (Sandbox Code Playgroud)

有谁知道问题出在哪里?

c++ gcc g++ static-libraries

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

找出一个库是需要静态还是动态运行时

每当您将静态库链接到 Visual C++ 项目时,您必须确保项目运行时库的值与用于编译库的值相匹配。例如,如果库是使用静态运行时选项编译的,而您尝试使用动态运行时编译项目,则链接器将抛出错误。

显然,链接器有一种方法可以确定库是使用静态运行时还是动态运行时编译的。我想知道是否有一个命令行工具可以使用该库并可以直接告诉我在创建过程中使用了哪些运行时?

static-libraries visual-studio visual-c++

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

Swift 项目中包含 C++ 静态库的编译错误

我创建了一个包含以下 C++ 文件的静态库:

//TestClass.h File:
#ifndef TESTCLASS_H_
#define TESTCLASS_H_

using namespace std;
#include <string>

class TestClass
{
public:
   TestClass();

   virtual ~TestClass();

   int sum(int x, int y) const;
   string chain(const string& x, const string& y) const;
};


#endif /* TESTCLASS_H_ */




//TestClass.cpp File:
#include<iostream>
#include "TestClass.h"

TestClass::TestClass()
{
}

TestClass::~TestClass()
{
}

int TestClass::sum(int x, int y) const
{
   return x+y;
}

//Test.cpp File:
string TestClass::chain(const string& x, const string& y) const
{
   return x+y;
}

int main(int argc, char* argv[]) …
Run Code Online (Sandbox Code Playgroud)

c++ objective-c static-libraries ios swift

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

android共享库中.so.12文件的不满意链接

我正在为 Android 构建 libexif。我正在使用以下交叉编译脚本:

PLATFORM_PREFIX=/home/tishu/Documents/osx-wks/GC/Thdl/jni/libexif-0.6.21/arch-arm/
NDK_PATH=/home/tishu/Documents/android-ndk-r8e/
NDK_PLATFORM=android-14

rmdir $PLATFORM_PREFIX
mkdir $PLATFORM_PREFIX

$NDK_PATH/build/tools/make-standalone-toolchain.sh  --system=linux-x86_64 --platform=$NDK_PLATFORM --install-dir=$PLATFORM_PREFIX

PATH=$PLATFORM_PREFIX/bin:$PATH

./configure --host=arm-linux-androideabi --prefix=$PLATFORM_PREFIX --enable-static
make clean
make install
Run Code Online (Sandbox Code Playgroud)

输出在 lib 文件夹中提供了 3 个 .so 文件

  • libexif.so(符号链接)
  • libexif.so.12(看起来像一个符号链接,但内容是大二进制)
  • libexif.so.12.3.3(实际二进制)

我已将最后一个文件重命名为 libexif.so 并根据本网站上的一些建议删除了两个符号链接。然后我想用我的应用程序构建它并使用以下 Android.mk,其中 libexif_native 是我使用 libexif 库的 c 文件

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)
LOCAL_MODULE := libexif
LOCAL_SRC_FILES := libexif-0.6.21/arch-arm/lib/libexif.so
LOCAL_EXPORT_C_INCLUDES := libexif-0.6.21/arch-arm/include
LOCAL_EXPORT_LDLIBS := libexif-0.6.21/arch-arm/lib/libexif.so
LOCAL_PRELINK_MODULE := true
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_ALLOW_UNDEFINED_SYMBOLS=false
LOCAL_MODULE := libexif_native
LOCAL_SRC_FILES := libexif_native1.1.4.c
LOCAL_C_INCLUDES := $(LOCAL_PATH)/libexif-0.6.21/arch-arm/include
LOCAL_C_INCLUDES …
Run Code Online (Sandbox Code Playgroud)

linker static-libraries android-ndk

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

是否有不同类型的.lib文件?

我使用Qt 编译了一个最小的代码示例,并注意到链接到其.lib文件添加了我的编译程序链接到其相应.dll文件的要求.

我想为.lib我的其他一个项目创建一个自己,但是想要这样做,而不必.dll为了它必须链接到它.


从这个问题的答案:静态库和共享库之间的区别?

静态库是.a(或Windows .lib)文件.与库相关的所有代码都在此文件中,并在编译时直接链接到程序中.使用静态库的程序从静态库中获取它使用的代码的副本,并使其成为程序的一部分.[Windows也有.lib文件,用于引用.dll文件,但它们的行为方式与第一个相同].

我是否理解有两种类型的.lib文件:

  • 将其中的代码复制到已编译的程序中的类型(不需要.dll链接)
  • 一种类型,.dll用于将对文件的引用添加到已编译的程序中

如果这个观察是正确的,那么如何编译.lib其中一种类型呢?

c++ dll static-libraries

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

使用 Visual Studio 2015 构建 FFTW 库 [添加:VS 2019 的步骤]

我正在尝试使用 Visual Studio 2015 来编译使用 FFTW 的项目。不幸的是,由于这个问题,来自 FFTW 网站的预编译二进制文件与 VS 2015 不兼容:未解析的外部符号 __imp__fprintf 和 __imp____iob_func, SDL2。尝试编译时出现链接错误。

我正在寻找有关如何编译兼容版本的任何建议。显而易见的答案是使用 VS 2015 重新编译 FFTW,但我根本找不到有关如何使用 Visual Studio 编译它的任何说明,并且有很多建议表明很难做到这一点。标准版本是用 MinGW 编译的,他们确实提供了如何做到这一点的说明。但是 MinGW 可以生成与 VS 2015 兼容的库吗?我也没有找到任何相关信息。

mingw static-libraries fftw visual-studio-2015 visual-studio-2019

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