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

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

Δημοσ.

Έχω ένα απλό προγραμματάκι σε C και θέλω να προσθέσω γραφικό περιβάλλον.

Και επειδή μ αρέσει η C# ψάχνω ένα τρόπο να συνδυάσω αυτά τα 2 προγράμματα.

Πώς μπορώ με ένα Project της Visual C# να ελέγχω ένα πρόγραμμα C;

Το μόνο που θέλω είναι να στέλνω κάποια data και ανάλογα τα data που θα παίρνει, θα λαμβάνει οδηγίες για το τί θα κάνει. Άρα θα μπορεί να εκτελεί συναρτήσεις.

 

Το μόνο που μπορώ να σκεφτώ είναι με txt αρχείο. Πχ, το button1 γράφει μια λέξη στο αρχείο, το άλλο πρόγραμμα διαβάζει και καταλαβαίνει ότι πατήθηκε το button1.

 

Τί άλλο μπορώ να κάνω;

Δημοσ.

Υπαρχουν διαφοροι τρόποι να κάνεις αυτο που θέλεις. Υποθέτω οτι εχεις τον κώδικα για το C προγραμματάκι.

 

Ενας απο τους σωστούς τρόπους για να γίνει ειναι να μετατρέψεις το προγραμματάκι σε βιβλιοθήκη και να παράγεις .NET assembly ώστε να πάρεις ενα managed library (/clr switch). Μετά απλά προσθέτεις την βιβλιοθήκη αυτη στα library dependencies του C# project σου.

 

[Ενας άλλος τροπος οπως ειπε και ο albNik ειναι να το κάνεις native βιβλιοθήκη και να χρησιμοποιήσεις pInvoke] 

Δημοσ.

Αν βαριεσαι να το μετατρεψεις όλο σε C# υπαρχει και το platform invoke όπου καλεις τις extern συναρτησεις τις C μεσα απο C#

http://msdn.microsoft.com/en-us/library/aa288468(v=vs.71).aspx

Βασικά έχει κάποια header file και κάποια dll.

 

τώρα είδα ότι υπάρχει example σε C#, το κατέβασα και προσπαθώ να κάνω Import τα dll αλλά δεν...

 

http://www.ftdichip.com/Support/SoftwareExamples/FTDIChip-ID.htm

 

μου βγάζει αυτό το σφάλμα όπως λένε κ εδώ:

http://stackoverflow.com/questions/7080447/i-want-a-solution-for-this-please-make-sure-that-the-file-is-accessible-and-th

 

Προσπαθώ να κάνω [DllImport("FTChipID.dll")]

 

αλλά τώρα μου βγάζει error σε ένα namespace

Error 1 The type or namespace name 'FTChipID' could not be found (are you missing a using directive or an assembly reference?)
 
Με τη C ήταν πιο εύκολο, include ότι χρειάζεσαι, πετάς όλα τα dll και τα header file στο project path και τρέχει.
Και μετά έχεις όλο το χρόνο να ασχοληθείς με το πρόγραμμα.
 
 
---------
 
Εγώ είχα πάρει το console application που έχει στα example, έβαλα ότι dll και header file ήθελε και έφτιαξα κάτι απλό με 2-3 συναρτήσεις.
Δημοσ.

Το using namespace FTChipID

είναι namespace της dll?

 

Το έλυσα αυτό με το error, αλλά κολάει πάλι σε ένα σημείο.

 


δεν δουλεύει, οπότε πρέπει να το κάνω με 2 προγράμματα.

Μου είναι και πιο εύκολο 

post-131369-0-50988800-1405011385_thumb.png

Δημοσ.

Δεν κατάλαβα τι εννοείς :-\

Να έχω 2 dll στο project? 32 και 64 ?

Άμα το κάνω 2 ξεχωριστά προγράμματα και κάνω επικοινωνία μέσω dll?

Δημοσ.

To C# exe θα το κανεις build μονο μια φορα με AnyCPU configuration. Ενώ το C dll θα το κανεις build 2 φορες ( x86 και x64).

Σε Windows 32 θα βαζεις το exe με το x86 dll και σε Windows 64 θα βαζεις το exe και το x64 dll.

Τα dll θα πρεπει να εχουν το ιδιο όνομα , αυτο που βαζεις στο DllImport()

Δημοσ.

Βασικά γίνεται ήδη build με AnyCPU configuration.

 

Το dll το έχω δίπλα στο exe, χωρίς dllimport

όταν κάνω dllimport παίρνω ερορ

The DllImport attribute must be specified on a method marked 'static' and 'extern'

παρόλο που η main που χρησιμοποιεί της συναρτήσεις της dll είναι static

χωρίς dllimport το πρόγραμμα σταματάει στην πρωτη συναρτηση της dll όπως την εικόνα που ποσταρα


Μήπως παίζει κάτι άλλο;

Γιατί το example που προσπαθώ να τρέξω έχει φτιαχτεί για να χρησιμοποιεί 2-3 συγκεκριμένες dll

Δημοσ.

Χρειαζεται να κανεις add reference το FTChipNet.dll το οποιο ειναι .ΝΕΤ dll, και να υπαρχει διπλα του το FTChipId.dll (32-64 αναλογα τα windows).

Τα DllImport υπαρχουν στο FTChipNet.dll, και δεν χρειαζεται να φτιάξεις.

 

Υπαρχουν τα δυο version του FTChipId.dll?

Βαλε σε ενα φακελο : exe, FTChipNet.dll και το αντίστοιχο FTChipId.dll και τρεξε to exe.

Δημοσ.

Τι Windows εχεις 32 ή 64?

Θες και το αντιστοιχο FTChipId.dll να εχει διπλα στο exe. 

 

 

Τωρα το ειδα

 

δεν υπάρχει άλλο dll Μόνο αυτό έχω :/

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

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

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

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

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

Σύνδεση

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

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