我正在制作这个 DLL 项目,并且不包含任何特定于编译器的宏。
importer(.exe) 文件编译干净,在我的 DLL 文件中导入方法后不会产生错误。他们在不同的项目上,但解决方案相同。
我是否因为不使用任何调用约定而把事情搞砸了?
我的 DLL 文件位于命名空间中,并以 OOP 方式实现。
但有时或大多数时候,.lib 不会生成,所以我必须将我的 DLL 的设置切换到 LIB 并复制生成的 .lib 文件,然后再次将其转回 DLL 文件。
而且我什至不知道我使用的库是 .dll 还是 .lib 文件。
有人给我解释清楚吗?
编辑
我将添加一些我对何时使用它感到非常困惑的情况。
假设我有这些:
namespace
{
class Base abstract
{
public:
Base()
{
//initialize base components
}
virtual void func() = 0;
public:
//interface
};
class Derive : public Base
{
public:
Derive();
void func() override;
private:
//interface
};
}
我应该declspec(dllexport)
在这里使用:
(
constructors
如Base()
和Derive()
)?virtual
功能?我会把它放在哪里?在派生中还是在基础中?或两者?- 公共变量?(可怕!)
我在其他头文件中看到,它们添加extern
到其中。我这里需要吗?
这将破坏我所有的代码语法
请回答....