我在做這個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