我的项目遇到了麻烦。
我必须将两个雷达与我的程序链接,但第一个有自己的库使用winsock,而在第二个我想使用winsock2。
我该怎么做?
目前,我从winsock.h
和winsock2.h
中的包含中获得了许多重新定义错误。
考虑到第一个雷达库已经是一个DLL,我只有一个头文件和lib文件(没有来源)。
提前感谢您的回答。
答案 0 :(得分:0)
您可以通过构造代码(和预编译的头文件)来解决编译问题,这样任何文件都不包含winsock.h和winsock2.h,这可能意味着要么根本不使用预编译的头文件,要么更多地使用它们在MFC项目中比正常情况复杂......
您可以将每个DLL包装在COM对象中,并通过主程序中的COM访问它们。这样做的好处是可以将两个DLL的使用与主编译完全分开。
您可以将每个DLL包装在一个新的DLL(每个DLL)中,该DLL为您的程序提供一个接口,该接口不需要接口头中的winsock头。
当然,这可能仅仅是您的Windows.h包含订单的问题,请尝试将其置于预编译标题的顶部...
#ifndef _WINDOWS_
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#undef WIN32_LEAN_AND_MEAN
#endif
#include <winsock2.h>