El_Loco
El_Loco

Reputation: 1866

Access denied running program in Visual Studio

so far I have only used Linux to write C++ code, but I want to learn to do it in Windows as well using CMake to simplify things.

To get started, I have written the following CMakeLists.txt:

cmake_minimum_required(VERSION 2.8)  
PROJECT( CMakeWin )

SET(CMAKE_BUILD_TYPE Release)

# find opencv and set variables
Set(OpenCV_DIR C:/Users/Erik/Documents/Libraries/opencv/build)
FIND_PACKAGE(OpenCV REQUIRED)


#set the default path for built executables to the "bin" directory
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR}/bin)

ADD_EXECUTABLE( ${PROJECT_NAME}
src/main.cpp 
)


TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${OpenCV_LIBS})

When I run CMake (using Visual Studio 11 configuration) it seems to work properly, but when I open the CMakeWin.sln project and build and then run it, I get

Unable to start program C:\..... The system cannot find the file 
specified.

But I have also received

access denied.

When I go directly to the Release or Debug folder and run

CMakeWin.exe

it runs as it shall. What can the problem be?

EDIT:

To avoid making visual studio trying to run ALL_BUILD, I had to set CMakeWin as the StartUp project. See https://simtk.org/forums/viewtopic.php?f=91&t=3676 and comments below.

Upvotes: 14

Views: 19583

Answers (4)

Vicky Gupta
Vicky Gupta

Reputation: 90

1.Close the solution. 2.Close Visual Studio. 3.Reopen your project.

This worked for me.

Upvotes: 1

Heisenberg
Heisenberg

Reputation: 5668

In Visual Studio, right-click your project and mark it as 'Set as Startup project'.

Upvotes: 19

Richard Matheson
Richard Matheson

Reputation: 1175

In Visual Studio, open up the project properties dialog (right click on the project in the solution explorer pane and choose properties). Go to Debug and see what the command line to run the app is. That is most likely what is wrong.

Upvotes: 4

Serge Ballesta
Serge Ballesta

Reputation: 149125

CMake uses the same configuration as the one you are used on Linux. The common structure for simple projects is to have the sources files, compiled files and executable in same directory. So you can compile and run from the same directory.

MSVC default configuration (I do not know how to change that, and I would not dare to) uses one folder per configuration. You can have as many as them as you want, common ones would be DebugUnicode, ReleaseUnicode, DebugAnsi and ReleaseAnsi.

The common structure is :

  • top level folder : solution
    • one folder per project in the solution (one solution can contain multiple projects) : source files
      • a res folder (optional) for resource files (icons, etc.)
      • a folder per configuration, Debug + Release : object and executable files

So it is by design that executable files are not in same folder as the solution. You can execute them from there by giving their relative path: Debug\project.exe

Upvotes: 2

Related Questions