我在做这个DLL项目,并且不包含任何编译器特定的宏。什么时候在C++中使用__declspec(dllexport)
导入程序(.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
。我在这里需要吗?
这会毁了我的所有代码语法
答案请....
我真的很讨厌那些谁只是查看这篇文章,思考这样的:“我不知道这东西” - > [更好地降低投票]没有生活任何评论。只是.... – mr5 2013-03-09 17:04:08
你假设很多,认为downvote的唯一原因是不知道'dllexport'是什么...; - ] – ildjarn 2013-03-10 20:57:38
不,我真的是这样说的,他们只是懒得读所有的细节我在这里说。我只是表达了我想说的话 – mr5 2013-03-11 10:54:40