gibt es in CodeSys v.2.3 eine Möglichkeit zu erkennen ob eine Bibliothek schon eingebunden ist.
Worauf ich hinaus will ist, in C++ kann man über
#ifndef __ZB_H
#define __ZB_H
abfragen welche Lib oder Header etc. schon eingebunden wurde.
Geht das in CodeSys.
MacToolz
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Anonymous
-
2008-02-18
Originally created by: Bernhard Werner
Hallo mactoolz,
Muss man das?
In C++ macht man das ja, um zu verhindern dass ein Header zweimal inkludiert wird. In CoDeSys bindet man Bibliotheken ja nicht über ein Statement ein, sondern im Bibliotheksverwalter, dort gibt es eine Bibliothek immer nur einmal oder keinmal.
Also nochmal in Kürze: Es geht nicht. Ich wüsste aber auch nicht wozu.
Bernhard Werner
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
innerhalb deines programms erkennen ist so nicht möglich denke ich; müsste man dann mit einer variablen innerhalb der bibliothek machen...
ansonsten erkennst du es rein optisch daran, dass bibliotheken, aus denen eine baustein benutzt wird im bibliotheks-verwalter schwarz sind und die, die nicht benutzt werden grau sind.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
das Problem ist, wenn man eine eigene Bibliothek erstellt,
und ich in meiner Lib Datei eine Bibliothek verwende die schon einem Projekt vorhanden ist, wird natürlich von CodeSys gemeckert das eine Biblio doppelt eingebunden wird.
Genaus aus diesem Grund. Darum macht man das auch in C++ das der Compiler merkt, es ist ein Header oder sontiges schon eingebunden.
MacToolz
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Selbst eine Bilbliothek erstellen ist denkbar einfach.
Beim speichern einfach als Dateityp 'Interne Bibliothek' angeben. Fertig.
PLC_PRG und Taskverwaltung sind in der lib dann natürlich nicht mehr vorhanden.
Es wäre natürlich sinnvoll, diese Libraries dann auch in einen definierten Pfad abzulegen.
Bei NICHT zielsystemspezifischen libs (z.B. auch Oscat.lib) ist das bei uns z.B.: "C:\Programme\3S Software\CoDeSys V2.3\Library\Asys Libs\"
Ansonsten unter:
"C:\Programme\Gemeinsame Dateien\CAA-Targets...."
Wobei wir es bisher komplett vermeiden konnten zielsystemspezifische Libs zu erstellen.
Womit wir dann bei 3. wären.
Evtl. zur Ausführung der Libs notwendige Sys... libs müssen im Mutterprojekt eingebunden werden, dürfen beim speichern der lib also nicht mehr in der lib eingebunden sein. Nur zum testen.
Gruss Erik
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
was man vielleicht hinzufügen müsste ist, das man darauf achten sollte, wenn man System Libs verwendet und diese dann im Mutterprojekt verwendet, das dann seine eigene Lib als letztes in der Bibliothekverwaltung steht. Sonst bekommt man Probleme beim compilieren.
Nicht desto trotz geht es bei mir nicht die Lib ist erstellt, bringt trotzdem Fehler.
Ich muss das nochmal testen und melde mich dann nochmal.
MacToolz
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo zusammen,
gibt es in CodeSys v.2.3 eine Möglichkeit zu erkennen ob eine Bibliothek schon eingebunden ist.
Worauf ich hinaus will ist, in C++ kann man über
#ifndef __ZB_H
#define __ZB_H
abfragen welche Lib oder Header etc. schon eingebunden wurde.
Geht das in CodeSys.
MacToolz
Originally created by: Bernhard Werner
Hallo mactoolz,
Muss man das?
In C++ macht man das ja, um zu verhindern dass ein Header zweimal inkludiert wird. In CoDeSys bindet man Bibliotheken ja nicht über ein Statement ein, sondern im Bibliotheksverwalter, dort gibt es eine Bibliothek immer nur einmal oder keinmal.
Also nochmal in Kürze: Es geht nicht. Ich wüsste aber auch nicht wozu.
Bernhard Werner
wie genau meinst du: erkennen?
innerhalb deines programms erkennen ist so nicht möglich denke ich; müsste man dann mit einer variablen innerhalb der bibliothek machen...
ansonsten erkennst du es rein optisch daran, dass bibliotheken, aus denen eine baustein benutzt wird im bibliotheks-verwalter schwarz sind und die, die nicht benutzt werden grau sind.
Hi,
das Problem ist, wenn man eine eigene Bibliothek erstellt,
und ich in meiner Lib Datei eine Bibliothek verwende die schon einem Projekt vorhanden ist, wird natürlich von CodeSys gemeckert das eine Biblio doppelt eingebunden wird.
Genaus aus diesem Grund. Darum macht man das auch in C++ das der Compiler merkt, es ist ein Header oder sontiges schon eingebunden.
MacToolz
Hallo zusammen,
ich würde gerne nochmal dieses Thema aufgreifen.
Kann mir jemand erklären wie man am besten in CodeSys mit den Biblios umgeht man selber eine Biblio erstellt.
Danke
MacToolz
Mahlzeit
Ja, kann jemand...
Beim speichern einfach als Dateityp 'Interne Bibliothek' angeben. Fertig.
PLC_PRG und Taskverwaltung sind in der lib dann natürlich nicht mehr vorhanden.
Bei NICHT zielsystemspezifischen libs (z.B. auch Oscat.lib) ist das bei uns z.B.: "C:\Programme\3S Software\CoDeSys V2.3\Library\Asys Libs\"
Ansonsten unter:
"C:\Programme\Gemeinsame Dateien\CAA-Targets...."
Wobei wir es bisher komplett vermeiden konnten zielsystemspezifische Libs zu erstellen.
Womit wir dann bei 3. wären.
Gruss Erik
Guten Moregn,
was man vielleicht hinzufügen müsste ist, das man darauf achten sollte, wenn man System Libs verwendet und diese dann im Mutterprojekt verwendet, das dann seine eigene Lib als letztes in der Bibliothekverwaltung steht. Sonst bekommt man Probleme beim compilieren.
Nicht desto trotz geht es bei mir nicht die Lib ist erstellt, bringt trotzdem Fehler.
Ich muss das nochmal testen und melde mich dann nochmal.
MacToolz
Morgen
Das wär mir ja ganz neu, dass die Reihenfolge der Libs irgendeinen Einfluss aufs Compilieren hat.
Ich glaub du machst da irgendwas falsch...
Wenn du SysLibs verwendest, dann sollten die in der Lib NICHT eingebunden sein, sondern nur im Mutterprojekt.
Das macht deine Lib zielsystemunabhängig.
Gruss Erik
Hallo zusammen,
also ich habe das ganze nochmal getestet, und war erfolgreich.
Meine Aussage, das man auf die Reihenfolge der Libs achten muss, muss ich hier zurück nehmen.
Die Standard Libs aus CoDeSys, Standard.lib, SysFileOpen, SysFileDir.lib
machen wohl keine anstalten um diese entfernen zu müssen.
Wie kann das sein ???
Vom Prinzip habe ich in meiner Lib und im Mutterprojekt die eingebunden.
Beim komiplieren treten aber keine Fehler auf.
Hat das jemand schonmal probiert. Zumindest funktioniert das.
MacToolz