我想用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