CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

"File can not be opened for write" .o file open by

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
allenhuffman



Joined: 17 Jun 2019
Posts: 577
Location: Des Moines, Iowa, USA

View user's profile Send private message Visit poster's website

"File can not be opened for write" .o file open by
PostPosted: Mon Jun 17, 2019 8:35 am     Reply with quote

I have a new PC with a fresh install of the CCS C Compiler. I am running into issues with a simple, multi-file test program. I will get a build error:

Code:
*** Error 129 "C:(path here)\LogTest.c" Line 284(1,2): File can not be opened for write
C:\(path here)\LogTest.o ===>  1 Errors,  1 Warnings.
Build Failed.


That .o file is locked and cannot be deleted from Windows. I have to close the CCS C Compiler and reopen it, then I can build again.

Has anyone else encountered this?
Ttelmah



Joined: 11 Mar 2010
Posts: 19550

View user's profile Send private message

PostPosted: Mon Jun 17, 2019 10:30 am     Reply with quote

Almost certainly means the process does not have write permission
in the directory where the file is being created.
You don't post the path to the directory you are working in?. Remember
a 'user' won't have write permission in the PIC compiler directory for
example. Are you the working as the same user you used when
installing the compiler?.
Windows 10, has a security feature that when accessing certain folders
it won't actually write to these but will instead create a 'virtual' version
temporarily. Where is your file where you are attempting to create
the project?.
allenhuffman



Joined: 17 Jun 2019
Posts: 577
Location: Des Moines, Iowa, USA

View user's profile Send private message Visit poster's website

PostPosted: Mon Jun 17, 2019 10:59 am     Reply with quote

Ttelmah wrote:
Almost certainly means the process does not have write permission
in the directory where the file is being created.
You don't post the path to the directory you are working in?. Remember
a 'user' won't have write permission in the PIC compiler directory for
example. Are you the working as the same user you used when
installing the compiler?.


Same user. Files are in a folder on my Desktop.

It's the .o files, nothing else. I close the IDE, then reopen and start again. It is leaving some process open hanging on to that file. Very odd. I've had it happen on several tiny programs I've been writing to test things. Very consistent issue.

Trying to delete the .o file from Windows shows "The action can't be completed because the file is open in C Compiler IDE." Fun.
Ttelmah



Joined: 11 Mar 2010
Posts: 19550

View user's profile Send private message

PostPosted: Mon Jun 17, 2019 11:31 am     Reply with quote

Folder on your desktop, is an odd place to be developing.
This won't work, if you have ever enabled the controlled folder access in
Windows 10.
Start Menu
Settings
Update and security
Windows security
Opem Windows Defender Security Centre
Protection from Virus & Threats
Turn off Controlled Folder access.

Key to remember is that the compiler is not 'you', and doesn't have your
security access.

A folder in My documents, is a more normal place to put things.
allenhuffman



Joined: 17 Jun 2019
Posts: 577
Location: Des Moines, Iowa, USA

View user's profile Send private message Visit poster's website

PostPosted: Mon Jun 17, 2019 11:40 am     Reply with quote

Ttelmah wrote:
Folder on your desktop, is an odd place to be developing.


I'm not Smile I'm just trying to get things to work. My initial thought was file permissions, so I created projects in a place I know that wouldn't be an issue Smile

Ttelmah wrote:
This won't work, if you have ever enabled the controlled folder access in
Windows 10.
Start Menu
Settings
Update and security
Windows security
Opem Windows Defender Security Centre
Protection from Virus & Threats
Turn off Controlled Folder access.

Key to remember is that the compiler is not 'you', and doesn't have your
security access.

A folder in My documents, is a more normal place to put things.


This isn't a permissions issue, though. It's a "something has the .o file open so I can't overwrite it" issue.

I can't even delete it from Windows Explorer (shows "in use") until I close the IDE. Then it's all fine.

Also, "Controlled folder access" is OFF on my system.
Ttelmah



Joined: 11 Mar 2010
Posts: 19550

View user's profile Send private message

PostPosted: Mon Jun 17, 2019 11:53 am     Reply with quote

Are you running the CCS IDE or another IDE like MPLAB?. Are you
compiling normally or trying to use linking?. The .o file is not normally
generated or used. Why are you using it?.
allenhuffman



Joined: 17 Jun 2019
Posts: 577
Location: Des Moines, Iowa, USA

View user's profile Send private message Visit poster's website

PostPosted: Mon Jun 17, 2019 12:03 pm     Reply with quote

Ttelmah wrote:
Are you running the CCS IDE or another IDE like MPLAB?. Are you
compiling normally or trying to use linking?. The .o file is not normally
generated or used. Why are you using it?.


CCS compiler, installed last week.

I am just clicking "Rebuild" Smile

I do not know what generates the .o or what its purpose is. My team lead has me go into project Options and enable all the items in the "List File" section, but everything else is left at defaults. (Though I have now started making an output directory and setting that in the options.)
Ttelmah



Joined: 11 Mar 2010
Posts: 19550

View user's profile Send private message

PostPosted: Mon Jun 17, 2019 1:29 pm     Reply with quote

Are you using #import or #export?.
Post a basic small program that displays the problem.
Also in the first window of the IDE options. I hope you have not ticked the
option 'Multiple Compilation Units'. If this is ticked and the code is not
setup to use multiple compilation units, this will cause this error.


Reading other threads, you seem to be trying to use the compiler in a very
complex way.

Standard way. One main file.
Start with processor include.
Then fuses
Then clock statement
Then any setup for things like serial, SPI etc.

Then include the other files forming the project.

Then any more code that is needed.

Compile this. No linking, multiple compilation units etc.

Multiple compilation units should _only_ be used by somebody who
understands how to do this, and the 'downsides' of this (It makes
optimsation much less efficient).

In MPLAB, simply make the 'main' file above the only 'source file'. Add
all other code files to the 'header files' section.
allenhuffman



Joined: 17 Jun 2019
Posts: 577
Location: Des Moines, Iowa, USA

View user's profile Send private message Visit poster's website

PostPosted: Tue Jun 18, 2019 8:17 am     Reply with quote

Ttelmah wrote:
Are you using #import or #export?.
Post a basic small program that displays the problem.
Also in the first window of the IDE options. I hope you have not ticked the
option 'Multiple Compilation Units'. If this is ticked and the code is not
setup to use multiple compilation units, this will cause this error.


We use the CCS PIC C Compiler setup, and Multiple Compiler Units. We have a number of projects for various boards using different PIC24 processors. The project I will be moving my code into uses 16 files (so it's pretty tiny).

What has to be set up special for multiple compile files? I did not notice anything that stood out in the various projects I have here.

For instance, something like this:

Code:

main.c
-----
#include <SampleProject.h>

void main()
{
   int result;

   result = AddTwoNumbers( 10, 30 );
}

AddTwoNumbers.c
-----
#include <SampleProject.h>

int AddTwoNumbers( int Number1, Number 2 )
{
   return ( Number1 + Number 2);
}


My test code is real generic -- nothing hardware specific, just basic code. Sometimes it builds fine, sometimes is gives me errors or leaves a .o open and can't overwrite it.

From reading other threads here, I have learned there are just "quirks" (or bugs) in the IDE and there are many workarounds. Someone pointed me to "#use DYNAMIC_MEMORY" for an error I was seeing. Even though I am not using malloc(), etc. I included that, and the linker issue went away. I just need to learn the quirks Smile

Thanks for your response!
Ttelmah



Joined: 11 Mar 2010
Posts: 19550

View user's profile Send private message

PostPosted: Tue Jun 18, 2019 10:52 am     Reply with quote

The problem is you are setting the compiler to use multiple compilation
units, but your code does not use MCU's. Result there is no .o file to use.
For a project to use MCU's, there has to be an export and import, and
at least two modules generated.
Understand using MCU's, is generally a very 'bad' way to use CCS.
It generates more efficient code when allowed to compile as a single
program not using MCU's. It really is not the way to work.
allenhuffman



Joined: 17 Jun 2019
Posts: 577
Location: Des Moines, Iowa, USA

View user's profile Send private message Visit poster's website

PostPosted: Tue Jun 18, 2019 11:09 am     Reply with quote

Ttelmah wrote:
The problem is you are setting the compiler to use multiple compilation
units, but your code does not use MCU's. Result there is no .o file to use.
For a project to use MCU's, there has to be an export and import, and
at least two modules generated.
Understand using MCU's, is generally a very 'bad' way to use CCS.
It generates more efficient code when allowed to compile as a single
program not using MCU's. It really is not the way to work.


Well, it's definitely making .o files. I'll dig into it. As to using MCU or not, I won't have a choice Smile That's just how all the projects at my job are.

Thanks!
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group