0

我有一个具有模板方法的类:

class DoStuffWithAnything {
public:
    template <typename T>
    void doStuff(const T&);
};

请注意,该方法没有定义,也永远不会被通用定义。编译单元将定义这些方法的实现。

在 gcc 上,我实际上没有问题,因为如果未定义符号,它将在 DSO 上搜索。

在 msvc 上我有一个问题,我如何告诉 MSVC 它应该导入定义(并且在编译 DSO 时,它应该导出定义)?

澄清

假设我有一个名为 XX 的库。并且libXX有一个class XX. 此外,libXX定义<> doStuff(const XX&).

所以,XX.hpp

class XX {
    //...
};

并且,XX.cpp

#include <XX.hpp>
#include <do_stuff_with_anything.hpp>

//...
template <>
void DoStuffWithAnything::doStuff(const XX&) {
    //...
}

所以,我的app.exe, 会有这样的代码:

#include <XX.hpp>
#include <do_stuff_with_anything.hpp>

int main() {
    XX a;
    DoStuffWithAnything stuffer;
    stuffer.doStuff(a);
}

app.exe必须知道doStuff<XX>是进口的。我怎么能说呢?

4

0 回答 0