我正在制作一个DLL项目,并且不包括任何特定于编译器的宏。
导入者(.exe)文件编译干净,在导入我的DLL文件的方法后没有生成任何错误。它们位于不同的项目但同一解决方案中。
因为没有使用任何调用约定,所以我是否搞砸了事情?
我的DLL文件在命名空间中实现面向对象编程。
但有时或大多数情况下,.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)
吗?
构造函数(例如
Base()
和Derive()
)?虚拟
函数?我要把它放在派生类还是基类中?或者两个都要放?- 公共变量?(糟糕!)
我在其他头文件中看到他们添加了extern
。我需要在这里添加吗?
这会破坏我所有的代码语法。
请回答....
dllexport
是什么才会给你的回答点踩,这样想可能有些牵强... ;-] - ildjarn