Bonjour,
Je suis là pour un peu d'aide, un problème sans doute simple à résoudre pour un passionné. J'ai besoin d'utiliser des fonctions en C que rédigent dans le logiciel de CFD StarCCM+ qui prennent en entrées des résultats et qui en sortent d'autres.
Mais pour ce faire il est nécessaire de passer par des librairies dont je ne sais absolument pas me servir. Je vous mets le "tuto" fournit par le logiciel sur la question à la fin du post.
J'ai installé Visual Studio 2008 et j'ai une fonction pour tester en .c qui donne la T° en Fahrenheit si on lui file celle en Kelvin. La fonction a été testée et fonctionne, maintenant le but est de la faire fonctionner avec le logiciel de CFD.
Première étape je me suis mis avec le terminal Visual Studio dans le dossier de la fonction et je l'ai compilé avec la commande donnée à l'étape 2 du tuto.
La 3ème étape pose problème, toujours dans le dossier de la fonction, je mets cette fois la commande qui dise en la modifiant pour adapter le chemin ce qui donne:
link -dll /out:libuser.dll *.obj C:\Program Files\CD-adapco\STAR-CCM+10.02.012\star\lib\win64\intel12.1\lib\UserFunctions.lib
Et là, il répond: << LINK : fatal error LNK1104: impossible d'ouvrir le fichier '"C:\Program.obj' >>
J'ai vérifié l’existence de la librairie UserFunctions.lib et le problème ne vient pas de là.
Sur le Net, la solution la plus commune a cette erreur est de corriger un des chemins d’accès du projet dans visual studio, le hic c'est que je n'ai pas de projet, j'ai seulement besoin d'une fonction.
Si quelqu'un a une idée, c'est le bienvenu, sinon je peux vous fournir autant de renseignement que nécessaire!
Amicalement,
Florian
Le Tuto:
"Creating a User Library on Windows
To create a user library on Windows, follow the steps below:
1.Open a Visual Studio x64 Cross Tools Command Prompt to compile a 64-bit library (or the Visual Studio Command Prompt for 32 bit).
2.Compile the source code into object files using the command:
cl /MD /D_WINDOWS -c *.c
For *.cpp files, substitute *.c with *.cpp.
For double precision code, include the compiler option /DDOUBLE_PRECISION.
3.Link the objects into a Dynamic Link Library (DLL) using the UserFunctions.lib found in the compiler subdirectory of your STAR-CCM+installation directory:
link -dll /out:libuser.dll *.obj “C:\Program Files\CD-adapco\STAR-CCM+ 7.02.008\win64\intel11.1\UserFunctions.lib”
For a 32-bit compilation substitute win64 with win32.
4.Check that you have a function that is called uclib exported from the DLL. STAR-CCM+ looks for this function in the DLL:
dumpbin/exports libuser.dll
An example of a dump output is given below:
Microsoft (R) COFF/PE Dumper Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file libuser.dll
File Type: DLL
Section contains the following exports for libuser.dll
00000000 characteristics
4F38F59E time date stamp Mon Feb 13 11:35:58 2012
0.00 version
1 ordinal base
1 number of functions
1 number of names
ordinal hint RVA name
1 0 00001240 uclib
Summary
1000 .data
1000 .pdata
1000 .rdata
1000 .reloc
1000 .text
5.Embed the manifest so that it moves with the DLL file when the library file is moved to another directory:
mt -manifest libuser.dll.manifest -outputresource:libuser.dll;2
The manifest file can be deleted after embedding."
Partager