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

时间:2013-08-29 20:22:47

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

我无法获得此工作的参考。我的解决方案中有2个项目。包装外观和服务器:

enter image description here

我添加了"包装外观的路径"在其他包含目录中:服务器属性页 - >配置属性 - > C / C ++ - >一般

似乎它可以工作,因为当我将它们包含在Server项目中时,intellisence可以找到正确的.h文件。

enter image description here

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

enter image description here

你能帮帮我吗?

BR

1 个答案:

答案 0 :(得分:1)

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

解决问题的方法有很多种。这只是一种基本方式

1)在SOCK_Stream类头中添加宏:

#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从您的Server项目中导出要链接的符号。通过不在Server中定义BUILDING_SOCK_STREAM,宏将默认为__declspec(dllimport)。