c++ - 同一解决方案中不同项目之间的引用(Visual Studio 2012)

标签 c++ visual-studio-2012 linker project

我无法让这个引用起作用。我的解决方案中有 2 个项目。包装外观和服务器:

enter image description here

我在以下附加包含目录中添加了“包装器外观”的路径:服务器属性页 -> 配置属性 -> C/C++ -> 常规。

它似乎有效,因为当我将它们包含在服务器项目中时,智能可以找到正确的 .h 文件。

enter image description here

问题是,当我尝试从 Wrapper facade 启动一个类时,我遇到了一些无法解决的 LINK 问题。它们在图片上看起来像。

enter image description here

你能帮我吗?

BR

最佳答案

您的链接器错误表明您的 SOCK_Stream 类未使用正确的 dllimport/dllexport 宏标记。

有很多方法可以解决这个问题。这只是一个基本的方法

1) 在您的 SOCK_Stream 类 header 中添加宏:

#ifdef BUILDING_SOCK_STREAM
    #define SOCK_STREAM_DLL  __declspec(dllexport)
#else
    #define SOCK_STREAM_DLL  __declspec(dllimport)
#endif 

2) 用 SOCK_STREAM_DLL 宏标记你的 SOCK_Stream 类

class SOCK_STREAM_DLL SOCK_Stream {
...
};

3) 在您的 WrapperFacade 项目中定义 BUILDING_SOCK_STREAM 符号(配置属性 -> C/C++ -> 预处理器 -> 预处理器定义)

目标是让 WrapperFacade 从您的服务器项目中导出您想要链接的符号。通过不在服务器中定义 BUILDING_SOCK_STREAM,宏将默认为 __declspec(dllimport)。

关于c++ - 同一解决方案中不同项目之间的引用(Visual Studio 2012),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18520307/

相关文章:

c++ - 链接到 Boost 系统时出错

c++ - ARM vector 表指向后一个字节

c++ - glfw 不创建窗口

C++ 模板链表链接器错误

python - Boost.Python 和错误 LNK1104 : cannot open file 'boost_python-vc100-mt-gd-1_55.lib'

java - 将 .net Web 服务部署到 Jboss 服务器

visual-studio - 如何将 Visual Studio 2013 中的新字体更改回 2012

c++ - GCC Address Sanitizer - 将库函数列入黑名单(特别是 boost::test)

c++ - SIOCGIWFREQ ioctl 返回错误 22 EINVAL - 参数无效,为什么?

c++ - 线程断点?