C++ 无法使用隐式链接的.dll中的类

C++ 无法使用隐式链接的.dll中的类,c++,dll,linker,dllexport,C++,Dll,Linker,Dllexport,在ShapeTester.cpp(另一个.dll项目)中使用Shape.dll中的类Shape时遇到问题 我在预处理器指令中包含了SHAPE_EXPORT,我可以得到.dll、.lib 属性>配置属性>链接器>输入>将其他依赖项设置为Shape.lib 属性>配置属性>链接器>常规>其他库目录(指向Shape.Lib的位置) 属性>配置属性>C/C++>附加包含目录(指向Shape.h的位置)您的Shape类应该在#ifdef块之外,而不是在它里面。除非定义了Shape\u EXPORT符号,否

在ShapeTester.cpp(另一个.dll项目)中使用Shape.dll中的类
Shape
时遇到问题

我在预处理器指令中包含了SHAPE_EXPORT,我可以得到.dll、.lib

属性>配置属性>链接器>输入>将其他依赖项设置为Shape.lib

属性>配置属性>链接器>常规>其他库目录(指向Shape.Lib的位置)


属性>配置属性>C/C++>附加包含目录(指向Shape.h的位置)

您的
Shape
类应该在
#ifdef
块之外,而不是在它里面。除非定义了
Shape\u EXPORT
符号,否则当前的代码不会声明
Shape

你想做的是

#ifdef SHAPE_EXPORTS
#define SHAPE_API __declspec(dllexport)
#else
#define SHAPE_API __declspec(dllimport)
#endif

class SHAPE_API Shape
// etc

请逐字逐句发布您收到的编译器/链接器错误。在看不到错误的情况下,除了猜测之外,你希望我们怎么做呢?我几乎是一字不差地做了,它说无法解析没有逐字张贴错误消息的符号“形状”。这只是发布错误消息的解释版本。只需发布原始版本。谢谢你的回复。我现在要尝试一下,但我在预处理器指令中定义了
SHAPE\u EXPORT
,这很有效,或者至少我遇到了新的错误。对于“Shape myShape=Shape(3,9,5);”行现在它说类型SHAPE_API不完整,没有需要3个参数的重载,但是有…谢谢你,我从昨晚开始就一直在努力解决这个问题。你能解释一下到底发生了什么事吗?我认为定义
SHAPE\u EXPORT
预处理器指令足够了通常#ifdef块的假分支是:“#define MYDLL\u API u declspec(dllimport)”,这样隐式链接到DLL的代码就会自动导入。
#ifdef SHAPE_EXPORTS
#define SHAPE_API __declspec(dllexport)
#else
#define SHAPE_API __declspec(dllimport)
#endif

class SHAPE_API Shape
// etc