Προς το περιεχόμενο

Γλώσσα C: The specified executable is not a valid application for this OS platform


manolis940
Μετάβαση στην απάντηση Απαντήθηκε από n3a,

Προτεινόμενες αναρτήσεις

Είπα μετά από καιρό να φτιάξω ένα πρόγραμμα στη C για να με βοηθήσει στην μετονομασία μιας μάζας αρχείων PDF που θέλω στα windows αλλά όταν κάνω compile και πάω να εκτελέσω το αρχείο μου εμφανίζει στο cmd  "The specified executable is not a valid application for this OS platform"

Ο κώδικας του προγράμματος (foo.c):

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <string.h>

char* substr(const char *src, int m, int n)
{
    // get the length of the destination string
    int len = n - m;

    // allocate (len + 1) chars for destination (+1 for extra null character)
    char *dest = (char*)malloc(sizeof(char) * (len + 1));

    // extracts characters between m'th and n'th index from source string
    // and copy them into the destination string
    for (int i = m; i < n && (*(src + i) != '\0'); i++)
    {
        *dest = *(src + i);
        dest++;
    }

    // null-terminate the destination string
    *dest = '\0';

    // return the destination string
    return dest - len;
}

int main(void)
{
    DIR *d;
    struct dirent *dir;
    d = opendir(".");
    if (d)
    {
        while ((dir = readdir(d)) != NULL)
        {
            char curfile[50];
            char newName[50];
            strcpy(curfile,dir->d_name);
            if(strcmp(substr(curfile,0,9),"Apospasma")==0){
              remove(curfile);
            }
            else if(strcmp(substr(curfile,0,11),"2_Apospasma")==0){
              sprintf(newName,"%s Apospasma.pdf",substr(curfile,11,strlen(curfile)-4));
              rename(curfile,newName);
            }
            else if(strcmp(substr(curfile,0,2),"KD")==0){
              sprintf(newName,"%s KD.pdf",substr(curfile,2,strlen(curfile)-4));
              rename(curfile,newName);
            }
            else if(strcmp(substr(curfile,0,12),"DeclReceipt_")==0){
              sprintf(newName,"%s Apodixsi.pdf",substr(curfile,12,strlen(curfile)-4));
              rename(curfile,newName);
            }
            else{

            }
        }
        closedir(d);
    }
    return(0);
}

cmd:

PS C:\Users\Manolis\Desktop> gcc -c .\foo.c -o bar.exe
PS C:\Users\Manolis\Desktop> .\bar.exe
Program 'bar.exe' failed to run: The specified executable is not a valid application for this OS platform.At line:1 cha
r:1
+ .\bar.exe
+ ~~~~~~~~~.
At line:1 char:1
+ .\bar.exe
+ ~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [], ApplicationFailedException
    + FullyQualifiedErrorId : NativeCommandFailed

Με διπλό κλικ μου εμφανίζει το παρακάτω μήνυμα:

image.png.c4b49ff199cf61450857259d59feb3d7.png

 

Το σύστημα μου:

Windows 11 Pro | 21H2 | 22000.795 | 64-bit operating system, x64-based processor

 

Έκανα εγκατάσταση του compiler σύμφωνα με τις οδηγίες του freecodecamp

 

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δεν υπάρχει λόγος να κάθεσαι να παιδεύεσαι με C, ειδικά εφόσον δεν το κατέχεις τόσο.

Με ένα απλό python script κάνεις τη δουλεία σου σε 10 γραμμές, με μια αναζήτηση στο νετ θα βρείς αρκετά παραδείγματα.

 

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

1 ώρα πριν, n3a είπε

Γιατί χρησιμοποιείς το "-c" option? Αν γράψεις:

gcc foo.c -o bar 

το εκτελέσιμο που δημιουργείται τρέχει;

Ναι δουλεύει.

Είχα την εντύπωση ότι μια ζωή έτσι έκανα compile και το -c σαν option έβγαινε απ΄ το compile. Μάλλον θυμάμαι λάθος απ' ότι διαβάζω εδώ.

Σ' ευχαριστώ για το hint :)

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...