小编zha*_*min的帖子

为什么有些程序需要 .lib 和 .dll 才能工作

当我要建立我的开发环境(SDLSimple DirectMediaLayer),我下载了由该网站提供的包,从readme.txt文件中我发现,我既需要.lib.dll...

我的问题是:

  1. 我不确定我的理解是否正确:在我看来,.libforwindows就像.afor linux,是静态库,而.dllforwindows就像.sofor linux,是共享库,这是正确的吗?
  2. 如果上面的想法是正确的,我认为我们只能使用.lib.dll,因为它们所做的工作是相同的?那么为什么要在一个程序中同时获得两个呢?
  3. 而且我不太明白.dll,如果我的内存服务我是对的,好处之一shared library是它们可以在程序运行时更新,那么人们怎么能这样做,如果我们更新.dll文件,正在运行的程序怎么能得到知道的变化.dll并将其重新加载到内存中?

dll shared-libraries static-libraries .lib

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

列表初始化的形式

请参阅以下代码:

std::vector<int> v1{1, 2, 3};
std::vector<int> v2 = {1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. 这两者有区别吗?我知道第一个必须是列表初始化,但第二个怎么样?

  2. 因为第二个有一个赋值符号,所以我认为编译器会首先使用它std::initializer_list来创建一个临时符号vector,然后使用复制构造函数将temp复制vectorv2.这是事实吗?

c++ initialization initializer-list c++11 list-initialization

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

如何将基本智能指针转换为 C++ 中的派生指针?

代码 :

class Base {
    ...
};

class Derived : public Base {
    void OnlyOwnedByDerived{
        ...
    }
};
Run Code Online (Sandbox Code Playgroud)

问题是: 1. 如果我使用基类的智能指针来引用派生类,这样做的原因是我想获得只适合虚函数的动态绑定的好处。但是如果我想使用只属于派生类的函数,我该怎么做? static_cast不同类的智能指针之间给了我一个错误......

  1. 我能想到的最直接的方法是使用原始指针而不是智能指针......

c++ pointers

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