Не удается запустить программу dll не является допустимым приложением win32

Как видно из названия, я не могу создать простую DLL. Я использую VS 2017 Community Edition Версия 15.8.0. Вот код.dll:

#include «stdafx.h» #include «InvWin32App.h» #include «$StdHdr.h» void Prc1()

Вот код для заголовка, согласно способу MS делать вещи:

#ifdef INVWIN32APP_EXPORTS #define INVWIN32APP_API __declspec(dllexport) #else #define INVWIN32APP_API __declspec(dllimport) #endif #ifdef __cplusplus extern «C» < #endif INVWIN32APP_API void Prc1(); #ifdef __cplusplus >#endif

Вот код драйвера: (Обновление: Программа драйвера является программой.exe.)

#include «pch.h» #include «InvWin32App.h» int main()

Это не может быть проще, чем это. Я получаю следующее сообщение об ошибке при попытке запустить код:

Unable to start program program name.dll program name.dll is not a valid Win32 application

Я могу создавать программы.exe в порядке. Я также получил ошибку ранее этим утром, когда я запускал VS 2017 версии 15.7.5. Обновление VS не принесло пользы. Я также пытался скомпилировать их как программы.c, но это не имело никакого значения.

EXE не является приложением Win32 в Windows 7 — что делать?

Я пару раз сталкивался с этой проблемой при создании программ.exe с использованием VS 2015. Я не помню, что я делал, но проблема исчезла. Любая помощь будет оценена.

user5635287 15 авг ’18 в 18:23 2018-08-15 18:23
2018-08-15 18:23

3 ответа

Щелкните правой кнопкой мыши проект в обозревателе решений, который является проектом для исполняемого файла, и нажмите «Установить как стартовый проект».

Обратите внимание, что «не является допустимым приложением Win32» не является ошибкой компиляции или ошибкой ссылки, это сообщение, которое вы получаете, когда пытаетесь отладить что-то, что не является исполняемым.

Вы можете запускать только исполняемые файлы. Исполняемые файлы потребляют DLL. Это должны быть два отдельных проекта с двумя наборами соответствующих параметров проекта.

Читайте также:
Не работает микрофон в программах

user5191073 15 авг ’18 в 19:57 2018-08-15 19:57
2018-08-15 19:57

Я обнаружил, что для любого, кто присоединяется к вечеринке в это время, эта ошибка возникает, когда вы пытаетесь запустить 32bit dll using a 64bit python .

Теперь я не буду вдаваться в подробности, почему это не сработает, поскольку ответы выше четко описывают это, но для этого есть 2 решения.

  1. Установите 32-битный питон и используйте его для связи с dll.
  2. Межпроцессное взаимодействие с использованием библиотеки msl-loadlibдокументации

Я использовал второй шаг, который казался более устойчивым. Шаги, которые я использую ниже, можно найти по ссылке на документацию выше.

  • Во-первых, нужно создать серверный модуль, который взаимодействует с 32-битным модулем.

#server.py from msl.loadlib import Server32 class Server(Server32): # the init takes mandatory host and port as arguments def __init__(self, host, port, **kwargs): # using windll since this application is being run in windows, other options such as cdll exists # this assumes that the dll file is in the same directory as this file super(Server, self).__init__(‘tresdlib.dll’, ‘windll’, host, port) # define a function that is to be called with the required arguments def fsl_command(self, com, doc): #the server32 exposes the loaded dll as lib, which you can then use to call the dll functions and pass the required arguments return self.lib.FSL_Command(com,doc)

  • Затем мы создаем клиентский модуль, который отправляет запросы Python на серверный модуль.

#client.py from msl.loadlib import Client64 class Client(Client64): def __init__(self): # pass the server file we just created in module32=, the host am using is localhost, leave port as none for self assigning super(Client, self).__init__(module32=’server’, host=»127.0.0.1″, port=None) # define a function that calls the an existing server function and passes the args def fsl_command(self, com, doc): return self.request32(‘fsl_command’, com, doc)

Читайте также:
Как оформляются таблицы в программе ms excel

MyProject.dll не является допустимым приложением win32

Я скопировал папку решения C++, написанную с помощью Visual Studio 2013, на свой компьютер и попытался запустить ее (я имею в виду отладку VS) с помощью VS 2022. Решение содержит 5 проектов, но я просто нацелился на один из них, поэтому выгрузил остальные и установил один как проект запуска, и эта ошибка произошла. Изображение ошибки

Файл решения хорошо работает на первом ПК, и проект не является проектом win32, а x64 (я мало что знаю о win32 или x64).

В соответствии с этим вопросом я попытался выбрать проект, установить его в качестве запуска, восстановить VS, установить vcredist_x64, но это не помогло.

После запуска VS создает папку Debug в каталоге решения, а не проект «LP_Dllx64Debug» (LP_Dll — это имя решения) без какого-либо файла .exe, а путь ошибки — это именно эта папка, может быть из этого?

AmirHossein 20 Июл 2022 в 11:41

Библиотека => DLL не может быть запущена. Вам нужен исполняемый файл => EXE. Есть ли в вашем решении проект с функцией main() ?

20 Июл 2022 в 11:42

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

AmirHossein
20 Июл 2022 в 13:11

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

Источник: question-it.com

Не является приложением win32 — что делать?!

файл не является приложением Win32

Пользователям операционной системы MS Windows иногда приходится столкнуться с ситуацией, когда при попытке запуска исполняемого файла система пишет: Файл или программа не является приложением win32. Что делать в этом случае, чтобы запустить программу?! Вариантов решения проблемы несколько.
Чаще всего причина неприятности кроется в несовместимости запускаемого программного обеспечения с текущей версией Windows. Например, утилита поддерживает только «Семёрку» и более старшие версии, а Вы пытаетесь запустить ещё на «Восьмёрке» или «Десятке».

Читайте также:
Какая видеокарта лучше для графических программ

Обычно в этом случае чтобы исправить ошибку «Файл не является приложением win32», достаточно всего лишь запустить его в режиме совместимости. Для этого кликаем на нём правой кнопкой мыши и выбираем пункт «Свойства»:

ошибка не является приложением win32

На вкладке «Совместимость» нужно будет сначала поставить галочку «Запустить программу в режиме совместимости с:», а затем ниже, в списке операционных систем выбрать ту из них, в который данная программа точно работает без проблем. Нажимаем кнопку «ОК» и снова запускаем приложение. Обычно после этого всё работает «как часы».

Примечание:

1. Если решение не помогает, попробуйте поставить последнюю версию пакетов Microsoft .NET Framework и Visual C++ Redistributable .

2. Причиной появления ошибки EXE-файла «Не является приложением win32» может быть и результат работы вируса. Проверить это можно вот как. Нажмите комбинацию клавиш Win+R, введите команду regedit и нажмите кнопку «ОК». Появится окошко редактора реестра, в котором откройте ветку:

В правой части редактора должны быть отображены два параметра:

что делать exe не является приложением win32

У обоих должно быть значение «%1» %*. Если прописано что-то иное — измените значение на правильное и перезагрузите операционную систему.

Не дружите с реестром — воспользуйтесь приложением AVZ:

3. Если ничего из перечисленного не помогло — искренне сожалею, но скорее всего Ваш исполняемый EXE-файл испорчен. Попробуйте скачать его из другого источника, либо найти другую версию — иногда это очень даже помогает.

Источник: set-os.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru