相关疑难解决方法(0)

程序静态链接到库但仍需要运行dll

在链接方面有一些我不理解的事情......我正在使用第三方库(GEOS库)编写程序.此程序依赖于geos.lib但仍需要运行geos.dll.

我读了这个问题,我想我理解静态库和动态库之间的区别.我不明白的是为什么我静态链接库时仍然需要一个dll.

c++ dll linkage

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

构建DLL文件时,生成的LIB文件是否包含DLL名称?

在Visual C++中,当我构建一个dll时,输出文件是.dll和.lib.

是.lib文件中内置的dll的名称.

我问这个问题的原因是:当我通过导入这个dll并运行exe来构建我的exe时,exe会尝试找到dll以将其加载到进程地址空间中.

由于我们只是在项目属性中指定库名(.lib文件),因此exe如何知道dll的名称.

注意:我在dumpbin libary文件(.lib)中看到它不包含dll的名称.

c++ winapi linker

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

轻松地将许多重要的“静态库项目”重构为“ dll项目”

我有6个静态库项目:-

- Math
- ECS             : depends on Math
- Utility         : depends on ECS
- Physics         : depends on Utility         
- Graphics        : depends on Utility     
- BaseGame        : depends on Physics and Graphics         
- Some game (.exe): depends on BaseGame      
(The "depends" here is transitive e.g. BaseGame also depends on ECS.)    
Run Code Online (Sandbox Code Playgroud)

我通过“静态库”技术成功使用了6个项目。

今天,我听说动态库可以减少编译时间(我们不讨论这是否成立),
因此我阅读了以下链接,并成功创建了一个小演示。

这是我的测试演示中的一些代码:

#ifdef SomeName1_EXPORTS
#define SomeMacro1 __declspec(dllexport) 
#else
#define SomeMacro1 __declspec(dllimport) 
#endif
SomeMacro1 void someFunction(int someParam);
Run Code Online (Sandbox Code Playgroud)

现在,是将其应用于我的实际项目的激动人心的时刻。 …

c++ dll visual-studio c++17 visual-studio-2017

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

Tinyxml - 定位x64平台时链接错误

我正在使用tinyxml库来解析项目中的XML文件.当我尝试定位x64平台时,我得到了LINKER错误,这里有一个错误:

错误4错误LNK2001:未解析的外部符号"private:static struct TiXmlString :: Rep TiXmlString :: nullrep_"(?nullrep_ @ TiXmlString @@ 0URep @ 1 @ A)ClassThatUsesTinyXML.obj

更新:我认为没有安装x64版本的tinyxml,但是当我尝试为x64平台构建库时,我遇到了这个错误:

LNK1561: entry point must be defined
Run Code Online (Sandbox Code Playgroud)

c++ tinyxml

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

将本机c ++类导入CLI项目

我正在创建一个CLI项目来包装现有的本机c ++项目(同一个解决方案文件中的两个独立项目).我想在托管类中包含一个指向本机类的指针作为成员.从我在线阅读的文档中,如果托管代码和非托管代码在同一个项目中,则可以完成此操作.如果本机代码和托管代码位于不同的项目中,那么唯一的选择是在两个项目之间使用dllimport和dllexport属性,并将本机代码类函数导出为静态函数.

这些是我唯一的选择,还是可以在两个单独的项目之间导入和导出整个本机类?我问,因为这决定了我如何设计我的托管包装器.提前致谢.

mixed-mode c++-cli managed wrapper visual-c++

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

使用lib和dll文件隐藏实现?

在C++中,什么是.lib和.dll文件,它们是如何创建的,它们是否能够让用户访问.cpp文件中实现的功能而不实际拥有这些文件?

特别是,我编写了包含一些我希望给别人使用的类的代码,但我不想给它们包含我的实现的.cpp文件.

PS:我正在使用CodeBlocks.

c++ deployment dll

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

使用VC++生成*.dll后*.lib在哪里?

我用VC++生成了一个*.dll.当我想使用它时,需要*.lib.但我找不到它.如何获得*.lib?谢谢.

c++ dll

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