Совместимость с C++ программы exe

В эти дни я работаю над программированием Windows. Следующий код не будет работать на другом компьютере Windows, почему?

#include <stdio.h>
#include <Windows.h>

int main() {
    TCHAR tcWindowsPath[MAX_PATH];
    TCHAR tcCurrentPath[MAX_PATH];

    GetWindowsDirectory(tcWindowsPath, MAX_PATH);
    GetSystemDirectory(tcCurrentPath, MAX_PATH);

    printf("%s \n", tcWindowsPath);
    printf("%s \n", tcCurrentPath);
    ////////////////////////////////////////
}

1 ответ

Решение

Выбор подходящей среды выполнения из настроек вашего проекта:

Configuration Propertes -> C/C++ -> Code Generation -> Runtime Library

определит, полагаетесь ли вы на статическое связывание вашего проекта со средой выполнения или динамическое связывание через DLL. Если вы решите динамически ссылаться на среду выполнения, то эти библиотеки DLL должны присутствовать в системе, на которой вы работаете.

Выбор параметров /MT будет статически связывать ваш исполняемый файл, позволяя вам работать в другой системе без установки распространяемых компонентов среды выполнения Visual C++. Если вы выберете параметры /MD, то система, на которой вы работаете, должна будет установить это. Установка распространяемых, таких как самый последний, Visual C++ Redistributable 2015.

Вот приличный, подробно об этом пишите.

ОБНОВИТЬ:

В дополнение к комментарию ниже со статической и динамической связью... Вы можете установить свою целевую платформу с помощью:

Configuration Properties -> General -> Platform Toolset

Я не уверен, на каком другом компьютере вы работаете с этим, но если это XP, у 2015 есть опция для Visual Studio 2015 - Windows XP (v140_xp). Убедитесь, что на платформу, на которую вы нацеливаетесь, распространяется ваша платформа разработки.

Эта статья нацелена на этот ответ в основном с точки зрения.NET, но информация так же актуальна.

Другие вопросы по тегам