"Fichier d'options du Linker" sous Windows

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
selzig
Messages : 68
Inscription : sam. 11/juil./2009 9:34

"Fichier d'options du Linker" sous Windows

Message par selzig »

Bonjour,

Quelqu'un pourrait-il m'expliquer comment on se sert de l'option "Fichier d'options du Linker" sous Windows ?
J'ai installé PellesC sur le poste, placé son répertoire et son répertoire/bin dans la variable d'environnement path du poste et l'ai redémarré. Je dispose effectivement d'un fichier .lib dans mysql-connector-c-6.1.11-winx64\lib\libmysql.lib du répertoire du project avec toute son architecture habituelle :bin, /include, /lib (et /docs)

J'ai essayé

Code : Tout sélectionner

ImportC "mysql-connector-c-6.1.11-winx64\lib\libmysql.lib"
EndImport
Import ou ImportC,

j'ai placé également "mysql-connector-c-6.1.11-winx64\lib\libmysql.lib" dans l'option "Fichier d'options du Linker". Sans résultat.
Je vois dans les résultats : Linker error!
Donc, j'aurais besoin d'un petit peu d'aide sur ce système de link un peu inhabituel pour moi.

D'avance merci. Gilles
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: "Fichier d'options du Linker" sous Windows

Message par comtois »

Je ne sais pas si ça pourra t'aider

http://www.purebasic.fr/english/viewtop ... 15&t=50149
After fluffing about I eventually got it to link and think I've found a fool proof methodology
to work through linking errors

Add a import reference to the lib your linking to as the first import
Add imports for the know dependencies of the lib
Insert any lib imports reported by a linker error as the second entry
Add your libs Import functions last

Example

Code : Tout sélectionner

ImportC "/usr/local/lib/libglfw.a" : EndImport  ;Add import reference to the lib your linking to 1st   
ImportC "-lgtk-x11-2.0" : EndImport  ;insert any libs reported by the linker in this position 
ImportC "-lrt" : EndImport   ;add known dependencies
ImportC "-lm" : EndImport
ImportC "-lGL" : EndImport 
ImportC "-lGLU" : EndImport 
ImportC "-lXrandr" : EndImport 
ImportC "-lXxf86vm" : EndImport 
ImportC "-lX11" : EndImport     

;then declare the imports 
ImportC "/usr/local/lib/libglfw.a"
 glfwInit();
 glfwTerminate();
 ...
[EDIT]

Y'a ça aussi qui peut aider

http://www.purebasic.fr/english/viewtop ... 15&t=51656
Dernière modification par comtois le dim. 05/nov./2017 20:05, modifié 1 fois.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: "Fichier d'options du Linker" sous Windows

Message par comtois »

Je ne sais pas, mais peut-être que les options du linker correspondent à ce qu'on trouve dans la doc de PelleC au chapitre linker ?

Je n'en ai vraiment aucune idée, mais ça serait bien de développer l'aide à ce sujet.
An option starts with the / (or -) character, may be given in upper or lower case, and can be one of the following:

Option Description
/ALIGN Specifies section (and file) alignment in the executable file.
/ALLOWBIND Specifies if the executable file can be bound.
/ALLOWISOLATION Specifies if the executable file allows isolation. [5.00]
/ALTERNATENAME Specifies an alternate symbol name, if the original name can't be found. [5.00]
/BASE Specifies the base address of the executable file.
/DBG Specifies the name of the DBG file. [8.00]
/DEBUG Specifies that the executable file should contain debug information.
/DEBUGTYPE Specifies the kind of debug information to emit.
/DEF Specifies a module-definition file to use. [2.72]
/DEFAULTLIB Specifies a new library to search.
/DELAY Configures delayed loading of dynamic libraries.
/DELAYLOAD Specifies delayed loading of the named dynamic library.
/DLL Creates a dynamic library.
/DRIVER Creates a driver. [2.73]
/DYNAMICBASE Specifies random rebasing at load time (ASLR). [8.00]
/ENTRY Specifies the entry-point of the executable file.
/EXPORT Exports a symbol.
/FIXED Locks the executable file to the base address.
/FORCE Forces the linker to continue working after some errors. [2.60]
/HEAP Specifies the HEAP size.
/HIGHENTROPYVA Specifies support for 64-bit random rebasing at load time. [8.00]
/INTEGRITYCHECK Specifies a check for a digital signature in order to load the image. [8.00]
/IMPLIB Changes the default name of the import library (and export object).
/INCLUDE Includes a symbol in the executable file.
/LARGEADDRESSAWARE Specifies that the executable file can handle addresses above 2 GB.
/LIBPATH Specifies a new directory to search for libraries. [2.60]
/MACHINE Specifies the target processor. [2.00]
/MANIFEST Creates a manifest file. [5.00]
/MANIFESTDEPENDENCY Specifies attributes for the dependency section of the manifest file. [5.00]
/MANIFESTFILE Changes the default name of the manifest file. [5.00]
/MANIFESTUAC Specifies attributes for the trustInfo section of the manifest file. [6.00]
/MAP Creates a MAP file.
/MAPINFO Specifies additional information to include in the MAP file.
/MERGE Merges two sections.
/NODEFAULTLIB Ignores /DEFAULTLIB directives embedded in object files.
/NOENTRY Specifies that the executable has no entry-point.
/NXCOMPAT Specifies that the executable file is compatible with the Windows Data Execution Prevention feature. [5.00]
/OPT Manages some linker optimizations.
/OSVERSION Specifies the required operating-system version. [2.90]
/OUT Specifies the name of the output file.
/RELEASE Specifies that the image checksum should be calculated. [2.90]
/SAFESEH Specifies that a safe exception handler table should be created. [5.00]
/SECTION Specifies attributes for a section. [2.00]
/STACK Specifies the stack size.
/STUB Specifies a 16-bit DOS program to be run in DOS mode. [2.00]
/SUBSYSTEM Specifies the required subsystem version.
/SWAPRUN Specifies that the executable file should be run from the Windows swapfile.
/TSAWARE Specifies that the executable file is Terminal Server aware.
/VERBOSE Displays more information during the linking process.
/VERSION Specifies the image version. [2.90]
/WS Specifies aggressive trimming of the 'working set' (appears to be obsolete).
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
selzig
Messages : 68
Inscription : sam. 11/juil./2009 9:34

Re: "Fichier d'options du Linker" sous Windows

Message par selzig »

Bonjour,

je laisse tomber pour l'instant ce problème. Je n'ai pas l'impression qu'il soit possible de réaliser un linkage statique même avec polink.

J'ai donc essayé l'accès à mon serveur PostgreSQL 9.1 qui était un peu tombé en désuétude. La recherche du mot de passe a pris plus de temps que la connexion avec le driver intégré de PB :D. Là, chapeau bas !

J'ai vérifié sous Windows et mac OS 10.12.6 (64). Très bien. Il faut que je regarde maintenant les fonctions dont il dispose notamment la "remontée" des codes d'erreur. C'est un problème que j'ai dû traiter avec Lazarus en corrigeant les sources.

Question probablement "saugrenue" au yeux des puristes du développement pour mobiles (Androïd, iOS) : est-ce que Spiderbasic intègre le même accès pgSQL comme PureBasic (c'est à dire un accès direct)... ou un JSON pgSQL intégré peut-être :o ? Auquel cas, je rebascule sur pgSQL : Lazarus et Delphi par Unidac, et Qt (en liaion statique) ainsi que Windev/WebDev possèdent des connecteurs natifs. 8)

Merci pour ces informations. Gilles
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: "Fichier d'options du Linker" sous Windows

Message par falsam »

est-ce que Spiderbasic intègre le même accès pgSQL comme PureBasic (c'est à dire un accès direct)... ou un JSON pgSQL intégré peut-être
SpiderBasic génére du JavaScript et la réponse est non.

JavaScript s'éxécutant dans le navigateur du client c'est bien plus sécurisant d'éxécuter par exemple un script php qui lui va s'exécuter sur le serveur.

Avec SpiderBasic, je te propose de découvrir la fonction HTTPRequest() pour éxécuter par exemple un script php. https://www.spiderbasic.com/documentati ... quest.html
selzig a écrit :ainsi que Windev/WebDev possèdent des connecteurs natifs.
Ca trolle un max. Voila plusieurs fois que tu cites Windev.

PureBasic c'est trois licences Windows/Mac/Linux pour 79 Euros avec mise à jour majeure à vie.

J'ai connu Windev à ses début quand l'application s'appeler HIGH SCREEN. J'ai beaucoup gagné en productivité et aussi par mal de chiffre d'affaire avec.

Windev + Webdev + Webdev Mobile c'est 2400 Euros environ sans compter le prix de la mise à jour annuel pour chacun d'eux qui est d'environ 900 Euros. j'ai une licence Windev que j'ai pris pour un de mes clients ainsi qu'une licence Webdev.

Windev je ne l'utilise plus suite à un dysfonctionnement du dongle obligatoire que Pc Soft a refusé de me remplacer. Quand à Webdev j'ai vite abandonné car il fallait un serveur dédié spécialement à WebDev.

Dans un autre topic, tu parlais aussi de la popularité des bases de données MySql. Que penses tu de la popularité des bases de données hyperfiles de Windev et de son principe d'analyse capable de te flinguer une base de données si cette analyse est corrompu ? (Oui c'est du vécu)

Concernant le sujet sur PostgreSQL ou MariaDB j'ai l'impression que tu ne lis pas ou ne donnes pas suite aux observations qui te sont faites.

J'utilise PostgreSQL et j'ai fait des tests avec MariaDB. Je n'ai eu aucun soucis de connexions et de requêtes avec PureBasic.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
selzig
Messages : 68
Inscription : sam. 11/juil./2009 9:34

Re: "Fichier d'options du Linker" sous Windows

Message par selzig »

Bonjour Falsam,

Non je ne trolle pas spécialement. Je décris simplement mon environnement de travail et ce que je cherche pour pouvoir y incorporer l'utilisation de PureBasic et éventuellement celle de SpiderBasic.

De mon expérience de ma programmation Desktop sous Windows et Linux et Mac OS X pour quasiment tous mes projets, je sais combien le déploiement des bibliothèques nécessaires à l'accès aux bases de données est pénible aussi bien pour le développeur que pour l'utilisateur final. Une parade (celle que j'ai retenue) est l'intégration totale des "interfaces" avec les BDD dans le code compilé des projets débarrassant tout le monde de ce problème. Donc en Lazarus/Delphi, la solution est UniDac qui fonctionne également sous iOS et Androïd et pour Qt, la compilation de l'environnement avec les options nécessaires pour intégrer l'accès aux bases. Évidemment, ce problème n'est pas connu des développeurs Windows (pour le DeskTop).

Je citais Hyperfile parce que l'environnement PC Soft permet également sous une autre forme d'accéder directement aux bases hyperfile (même distantes) à partir de tous ses produits y compris lors du développement pour mobile sans utiliser de php.

Ceci dit, je ne porte pas de critique en ce qui concerne PureBasic. J'essaie d'en cerner les contours et que vous le vouliez ou non, il y a une grande différence entre le driver moderne de PgSQL proposé par PureBasic et celui de MySQL proposé par le même PureBasic. L'un demande quelques secondes d'intégration dans n'importe quel projet aussi bien sous Windows que Mac OS 10 -je n'ai pas encore testé Linux- sans fournir de bibliothèque tierce, et en ce qui concerne MySQL, j'ai passé 2 jours à combattre le problème Mac OS avec le connecteur C d'Oracle... en vain comme d'autres sans parler d'une éventuelle intégration si elle est possible, ce que je ne sais pas.

Je ne fais aucun prosélytisme pour quelque OS que ce soit ni pour quelque plateforme de développement.

Comme je l'ai écrit les bases de données ont des avantages et des inconvénients qui leurs sont propres. Je les considère en fonction de mes besoins donc forcément de manière relative. Là encore, aucun prosélytisme. J'ai simplement fait remarquer qu'en ce qui concerne le Web, MySQL est majoritairement utilisé. J'ai massivement utilisé HyperFile et l'utilise encore, MariaDB et autrefois PostgreSQL, le tout étant installé sur des serveurs dédiés hébergés (Debian 64). Des problèmes, on en rencontre toujours quelque soit la base de données utilisée... C'est désagréable la première fois après on y pallie. Et dans ces conditions, je n'ai pas rencontré de mauvais produits.

Je joue l'homogénéité et la complémentarité et je pense que PureBasic a sa place dans mes outils de développement. Mais surtout j'essaie d'utiliser l'approche la plus simple aussi bien pour le développeur que pour l'utilisateur final. C'est à mon avis la seule solution pour pérenniser un produit. Le développer c'est bien, le déployer et le maintenir facilement sont des facteurs que j'ai appris à ne pas négliger.

Donc, je ne conteste rien, je ne critique pas, je ne trolle pas... je découvre, je questionne. Peut-être ne suis-je pas sur le bon forum en ce qui concerne PureBasic ? Si pour y participer, la contrepartie est le sectarisme, je ne l'utiliserai pas longtemps. Mais, vous ne m'entendrez jamais affirmer que PureBasic est le meilleur produit de développement. Et il en est de même pour tous les autres, et toutes les bases de données. Ce genre d'assertion n'a aucun sens.

Bonne fin de journée. Gilles
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: "Fichier d'options du Linker" sous Windows

Message par falsam »

Mais, vous ne m'entendrez jamais affirmer que PureBasic est le meilleur produit de développement.
Je ne le dirais jamais non plus. Je suis par contre étonné de votre processus de découverte de PureBasic.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Marc56
Messages : 2148
Inscription : sam. 08/févr./2014 15:19

Re: "Fichier d'options du Linker" sous Windows

Message par Marc56 »

il y a une grande différence entre le driver moderne de PgSQL proposé par PureBasic et celui de MySQL proposé par le même PureBasic
(Précision)

- Le support PostgreSQL fait partie officiellement de PB. Son appel se fait par une simple ligne UsePostgreSQLDatabase()
- Le "driver" MySQL est un développement tiers, donc même si tu dispose du code source, rien ne dit que ce sera pérenne. :!:

Anecdote PostgreSQL: Il y a quelques années (2005) j'ai dû arrêter un serveur qui tournait 24/7 (un vieux Pentium 90MHz) sur lequel j'avais installé un système LAMP (enfin FAPP, car FreeBSD remplaçait Linux et PostgreSQL remplaçait MySQL). Un système de Helpdesk de mon cru utilisé par 250 personnes.
Je fais un uptime juste pour voir avant d'éteindre: 600 jours :o
(et je n'avais jamais arrêté la base, le 'vacuumdb' automatiquement lancé dans le cron daily se chargeant tout seul de faire le ménage)
(J'ai dû arrêter les serveurs car dans les entreprises d'une certaines taille, on doit faire faire par un prestataire certifié un contrôle de tous les circuits électriques, y compris protégés au moins tous les 2 ans, donc faire un arrêt complet)

Avant ça, j'avais 'comme tout le monde' utilisé MySQL (standard de fait). En réel: Très rapide en lecture, mais des blocages (exaspérants) parfois de plusieurs secondes en écriture.
Bref, tout ça pour dire que pour développer un système en architecture deux tiers, ce n'est pas le système le plus utilisé (MySQL) qui est forcement le meilleur choix. PostgreSQL a aussi été moins utilisé car peu de sociétés et FAI on assuré du service au début.

PS. PostgreSQL est passé en v10 récemment.

Voilà, j'arrête le off-topic.
(un modo peut déplacer ou supprimer si nécessaire, je n'y vois pas d'inconvénient)

:wink:
comtois
Messages : 5172
Inscription : mer. 21/janv./2004 17:48
Contact :

Re: "Fichier d'options du Linker" sous Windows

Message par comtois »

Pour le support de MariaDB , tu peux toujours faire une demande sur le forum officiel de PureBasic :

http://www.purebasic.fr/english/viewfor ... e275351f77

Les développeurs de PureBasic lisent toutes les demandes. Pour qu'une demande soit prise en compte il faut qu'elle soit argumentée, que ce soit possible sur window/Linux et OSX. Qu'il n'y ait pas de licence à payer, qu'il y ait un intérêt pour un grand nombre, et que Fred valide et trouve le temps de le faire. Donc il n'y a pas de garantie que ça sera pris en compte, mais ça peut aider.

Concernant le fichier .pbi Marc56 m'a devancé, c'est un fichier écrit par les utilisateurs de PureBasic.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: "Fichier d'options du Linker" sous Windows

Message par G-Rom »

selzig a écrit :Bonjour,

Quelqu'un pourrait-il m'expliquer comment on se sert de l'option "Fichier d'options du Linker" sous Windows ?
J'ai installé PellesC sur le poste, placé son répertoire et son répertoire/bin dans la variable d'environnement path du poste et l'ai redémarré. Je dispose effectivement d'un fichier .lib dans mysql-connector-c-6.1.11-winx64\lib\libmysql.lib du répertoire du project avec toute son architecture habituelle :bin, /include, /lib (et /docs)

J'ai essayé

Code : Tout sélectionner

ImportC "mysql-connector-c-6.1.11-winx64\lib\libmysql.lib"
EndImport
Import ou ImportC,

j'ai placé également "mysql-connector-c-6.1.11-winx64\lib\libmysql.lib" dans l'option "Fichier d'options du Linker". Sans résultat.
Je vois dans les résultats : Linker error!
Donc, j'aurais besoin d'un petit peu d'aide sur ce système de link un peu inhabituel pour moi.

D'avance merci. Gilles
Bonjour Gilles, en théorie, si le fichier est présent , il ne devrait y avoir aucun problème, néanmoins , il faut aussi être sur de plusieurs choses :
- la lib statique doit être dans le même format que le compilateur PB ( x86 ou x64 ) ( je le dit car j'ai déjà vu des gens essayer de linké une x86 sur du x64 et crier au bug )
- que cette lib , si elle à des dépendances , il faut impérativement les linker aussi.

Je ne connais pas les dépendances de cette lib, il doit surement y en avoir.
selzig
Messages : 68
Inscription : sam. 11/juil./2009 9:34

Re: "Fichier d'options du Linker" sous Windows

Message par selzig »

Bonjour G-Rom,

Oui c'est à cet effet que j'ai téléchargé les sources de Mysql et de MariaDB d'une part et Pelles C d'autre part. Normalement construire des sources ne me pose pas (trop) de problème particulier. Là, c'est assez curieux car Pelles C note une discontinuité dans la chaine de compilation...

J'ai reporté à plus tard l'examen de ce problème parce qu'il risque de prendre un petit peu de temps alors que l'action engagée est la découverte de PB.

Cordialement. Gilles
G-Rom
Messages : 3627
Inscription : dim. 10/janv./2010 5:29

Re: "Fichier d'options du Linker" sous Windows

Message par G-Rom »

Bonjour Gilles, l'utilisation de Pelles C est inutile pour un simple linkage, si j'ai besoin d'avoir un lien statique avec PureBasic et lib opensource, j'utilise Visual Studio 2017, il me sort un .lib auquel je peu linker facilement par la suite avec ImportC en oubliant pas de linké de la même manière les dépendances de ma lib, j'évite aussi un maximum d'utiliser tout ce qui est standard en statique car PB link avec une vieille MSVCRT.lib , si tu n'as pas la possibilité de ne pas utilisé le standard, il faut peut être compilé tes libs avec vs2013 ( pas essayé en statique & exit le c++11/17 ) , sinon tu n'auras pas le choix d'utilisé une DLL.
Répondre