标签: static-libraries

Ada编译问题(找我没有的adbs?)

我正在尝试使用gnatmake将第三部分库编译到我现有的应用程序中.我收到此错误:

gnatmake: "dds.adb" not found
gnatmake: "dds-domainparticipant.adb" not found
gnatmake: "dds-domainparticipantfactory.adb" not found
gnatmake: "dds-publisher.adb" not found
gnatmake: "dds-topic.adb" not found
gnatmake: "dds-publisher_impl.adb" not found
gnatmake: "dds-datawriter_impl.adb" not found
gnatmake: "dds-domainparticipant_impl.adb" not found
gnatmake: "dds-readcondition_impl.adb" not found
gnatmake: "dds-datareader_impl.adb" not found
gnatmake: "dds-subscriber.adb" not found
gnatmake: "dds-condition.adb" not found
gnatmake: "dds-datareader.adb" not found
gnatmake: "dds-statuscondition.adb" not found
Run Code Online (Sandbox Code Playgroud)

我将这些添加到构建adp的gnatmake中.-I包含所有规范(.ads文件),libnddsadad包含所有o文件:

       -I/lib/ndds.4.5d/include/ndds/dds_ada \
       -I/lib/ndds.4.5d/include/ndds/dds_ada/support     \
       -I/lib/ndds.4.5d/include/ndds/dds_ada/support/low-level \

       /lib/Linux/ndds.4.5d/lib/GNATgcc/static/debug/libnddsadad.a \
Run Code Online (Sandbox Code Playgroud)

任何想法为什么它想要实际的身体文件?规格+ .a文件不应该足够吗?我怎么能绕过这个呢?

static ada static-libraries data-distribution-service gnat

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

如何为Windows编译静态Taglib库?

我不想编译动态库,所以这个问题没用.

我下载了taglib并使用以下方法编译它:

cmake -DENABLE_STATIC=ON -DENABLE_STATIC_RUNTIME=ON -DWITH_MP4=ON -G "Visual Studio 10"
Run Code Online (Sandbox Code Playgroud)

这会生成Visual Studio解决方案,我可以编译"tag"项目,该项目在taglib/Release中生成tag.lib.

当我尝试在测试应用程序中使用库时出现问题 - 没什么,只是一个简单的测试:

#include "stdafx.h"
#include "fileref.h"

int _tmain(int argc, _TCHAR* argv[])
{
    TagLib::FileRef d("");
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下链接器错误:

Error   1   error LNK2001: unresolved external symbol "__declspec(dllimport) public: virtual __thiscall TagLib::FileRef::~FileRef(void)" (__imp_??1FileRef@TagLib@@UAE@XZ)  C:\...\taglib_test\taglib_test\taglib_test.obj  taglib_test
Error   2   error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall TagLib::FileRef::FileRef(class TagLib::FileName,bool,enum TagLib::AudioProperties::ReadStyle)" (__imp_??0FileRef@TagLib@@QAE@VFileName@1@_NW4ReadStyle@AudioProperties@1@@Z)    C:\...\taglib_test\taglib_test\taglib_test.obj  taglib_test
Error   4   error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall TagLib::FileName::FileName(char const *)" (__imp_??0FileName@TagLib@@QAE@PBD@Z) C:\...\taglib_test\taglib_test\taglib_test.obj  taglib_test …
Run Code Online (Sandbox Code Playgroud)

windows taglib static-libraries visual-studio-2010

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

将dll链接到静态库并将其加载到链接到同一静态库的应用程序中

我正在创建一个应用程序,它支持在运行时动态加载的dll形式的模块.代码按以下方式排列:

  • 核心 - 静态库

    这有一种加载共享库并调用"create"函数的机制,该函数返回一个新的Module对象(使用共享头).

  • 模块共享库(链接到核心静态库)

    此模块使用共享模块头,并使用核心库中的其他类(因此它与核心库链接的原因).它构建为包含静态库中的所有符号.

  • 测试应用程序可执行文件(链接核心静态库)

我变得时髦,看似零星的行为.它们总是在访问冲突中结束,但似乎我非常明确地设置的成员变量(整数)将在后面的函数中打印出来作为垃圾(我已经证实它们之前没有被删除).如果它们加载动态库(即使我从不调用create函数),这似乎只会发生.

我的主要问题是,这里存在危险吗,共享库中的符号会与可执行文件中的符号冲突(因为它们来自同一个静态库)并导致问题,即使它们来自完全相同的静态库?

c++ linker shared-libraries static-libraries

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

使用C而不使用OS的小型嵌入式系统中的静态与共享库(假设为XIP)

没有RTOS/OS的小型嵌入式系统是否使用动态/共享库.我的理解是,使用它非常困难,而且效率不高.

如果我们多次调用一个静态库中存在的API.API代码是否会放置在每个调用位置,如宏扩展或代码/文本将是所有调用的通用位置.我认为代码/文本很常见.

如果我为具有多个API的.c文件创建了静态库,并且我将其与主文件静态链接,并且在主文件中只调用了一个API,那么我的问题是整个库是否包含在最终的.bin中或仅特定的API代码.

从上面的问题,你可以假设我缺少基本面本身,所以任何人都可以提供相关的链接来刷这些.

问候
[编辑]

我试过以下事情

addition.c模块

`int addition(int a,int b)`  
`{`  
`int result;`  
`result = a + b;`  
`return result;`  
`}`

`size addition.o`   
23        0       0      23      17 addition.o    
Run Code Online (Sandbox Code Playgroud)

multiplication.c模块

`int multiplication(int a, int b)`  
`{`  
`int result;`  
`result = a * b;`  
`return result;`  
`}`
`size multiplication.o`  
21        0       0      21      15 multiplication.o  
Run Code Online (Sandbox Code Playgroud)

创建了两者的目标文件并放入了archieve

ar cr libarith.a addition.o multiplication.o   
Run Code Online (Sandbox Code Playgroud)

然后静态链接到我的主应用程序
example.c模块

`#include "header.h"`  
`#include <stdio.h>`  
`1:int main()`  
`2:{`  
`3:int result;`  
`4:result = addition(1,2);`  
`5:printf("addition result is : …
Run Code Online (Sandbox Code Playgroud)

embedded shared-libraries static-libraries

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

为什么链接器找不到静态库中存在的符号?

这是一个相当简单的应用程序的设置,我无法正确链接.基本上是单个源文件main.cpp,带有静态库的目录libbreakpad_client.a,以及库中的标头breakpad.

$ ls .
main.cpp libs breakpad
$ ls libs
libbreakpad_client.a
Run Code Online (Sandbox Code Playgroud)

以下是Google Breakpad文档中main.cpp逐字记录的来源.

#include "client/linux/handler/exception_handler.h"

void crash()
{
  volatile int* a = (int*)(NULL);
  *a = 1;
}

static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
{
  printf("Dump path: %s\n", descriptor.path());
  return succeeded;
}

int main()
{
    google_breakpad::MinidumpDescriptor descriptor("/tmp");
    google_breakpad::ExceptionHandler eh(descriptor, 0, dumpCallback, 0, true, -1);
    crash();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译它时,链接器抱怨它无法找到ExceptionHandler构造函数和析构函数.

$ g++ -Ibreakpad/src -lbreakpad_client -Llibs -o main main.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ linker static-libraries

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

将iOS静态库绑定到Xamarin.iOS并使用dll

我能够为我的Objective-C静态库成功创建dll文件.但是当我尝试从Xamarin.iOS应用程序和编译中引用该dll时,它给了我很多错误,比如......

错误MT5210:本机链接失败,未定义符号:_AudioFileClose.请验证是否已引用所有必需的框架并且本机库已正确链接.(MT5210)

错误MT5210:本机链接失败,未定义符号:std :: ios_base :: Init :: Init().请验证是否已引用所有必需的框架并且本机库已正确链接.(MT5210)

错误MT5202:本机链接失败.请查看构建日志.(MT5202)


在此之后,我尝试使用Addtional mtouch Arguments链接我的.a库.添加这些参数后,我收到了新的错误.

无法解析命令行参数:无法捆绑未注册的选项'-o'.

有人可以帮我解决这个问题.

static-libraries xamarin.ios ios xamarin

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

Cocoapods - 用于不同目标的集成命令

根据http://guides.cocoapods.org/terminal/commands.html#pod_install,如果要自己集成库或外部依赖项,可以使用-no-integrate选项.

基本上我有我的静态库(comms.a)和头文件(comms.h).我的应用程序将导入此库以进行服务器通信.我的应用程序没有使用cocoapods进行集成.(从xcode手动链接).

但我的静态库具有以下结构.

- Comms (main target) [Dependency on AFNetworking using cocoapods]
- CommsTest (test case target) [Dependency on GHUnit using cocoapods]
Run Code Online (Sandbox Code Playgroud)

什么应该是我的podfile,以便它将获取AFNetworking但集成取决于我并获取GHUnit并集成到我的测试用例目标.

注意:我不希望我的静态库使用cocoapods集成到我的应用程序中.

static-libraries cocoapods

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

XCode链接静态库(GLEW)尝试dylib加载

我正在尝试将GLEW库链接到Xcode项目,但是我一直遇到问题。每当我将构建设置为与libGLEW.a链接时,启动时我都会立即崩溃,并显示以下错误输出:

yld:未加载库:/usr/lib/libGLEW.1.12.0.dylib引用自:/Users/xxx/Library/Developer/Xcode/DerivedData/xcode-test/Products/Debug/manualWindow.app/Contents/MacOS/ manualWindow原因:找不到图片

我没有编写任何代码来请求我的应用程序加载此动态库。这种现象似乎是我的GLEW库实际上是一个导入库,并且正在尝试加载dylib。我确实自己构建了GLEW,并且可以在生成静态库的对象时在命令行上指定“ -DGLEW_STATIC”。

有人知道我怎么能知道我的GLEW库(libGLEW.a)实际上是dylib的导入库吗?作为后续,如何正确构建库以避免这种情况?

macos xcode glew static-libraries

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

为什么Swift不支持iO中的静态库

为什么Swift不支持静态库

我看到了这个解释,但我不明白这个推理.

当前运行时不附带操作系统,因此静态库将导致最终可执行文件中的多个运行时.对于与较新的OS或Swift的兼容性,静态链接的运行时将更难以修补....运行时间不断变化.我们需要动态链接它以便能够处理未来的前向部署问题. - 乔格罗夫

https://twitter.com/owensd/status/555060783407591424

请解释.

static-libraries swift

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

如何手动将库添加到Visual Studio 2017项目?

对于这个肯定会被问到并回答过的非常基本的问题,我也深表歉意。我搜索了一个答案,但是找不到任何有用的东西。我正在使用VS 2017社区的最新更新,并且试图将我以前称为“函数库”的内容手动添加到位于“解决方案”下的项目中。

该项目只是一个C ++或C#控制台应用程序。我所拥有的是.h(头)文件,.lib(静态库)文件和.dll(动态库)文件。我打算对该库进行“函数调用”。我知道我需要将dll保存在可执行文件所在的调试文件夹中,但是我不确定如何在VS 2017中“添加依赖项”。我知道如何管理和安装NuGet软件包,但是这些文件不是不是一个方便的NuGet软件包。

我希望能以正确的方式(VS 2017)获得建议。

c# c++ static-libraries visual-studio dynamic-library

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