我想用C++编写的GUI部署一个.exe文件。使用微软的Visual Studio。我可以在Windows中静态链接ws2_32.lib吗? C++ MFC
我所创建的GUI使用MFC,我可以得到它通过改变构建选项静态编译:
平台工具集 - 的Visual Studio 2015年 - 的Windows XP(v140_xp) 使用MFC的 - 在使用MFC一个静态库 运行时库 - 多线程(/ MT)
这工作正常,并给我一个GUI,我可以从一个单一的.exe文件在Windows 7/XP上执行。
不过,我需要在插座的支持,加上因为该程序包含一个IRC客户端。因此,我需要包括库:
#include "stdafx.h"
#include <stdio.h>
#include <string>
#include <iostream>
#include <winsock2.h>
#include <ws2tcpip.h>
#pragma comment(lib,"ws2_32.lib")
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <boost/tokenizer.hpp>
但是我这样做,将不再视为与编译时: 运行时库 - 多线程(/ MT) 相反,它要求: 运行时库 - 多线程调试(/ MTD)
这意味着它不再视为一种便携式的.exe
任何想法?
“不再编译”是什么意思?如果您收到错误消息,请将其发布。 – ElderBug
此外,您将无法使用winsock'静态',因为它是一个DLL。/MD和/ MT只控制C运行时链接。这并不意味着可执行文件不可移植;该DLL始终包含在Windows中。 – ElderBug
您不能静态链接* ws2_32.lib *,那也不是您的问题。首先,所有受支持的Windows版本都附带Windows套接字实现。你真正的问题是,你正在混合CRT的发布和调试版本。您需要修复您的构建配置。 – IInspectable