-
1 pièce(s) jointe(s)
C# + dll en C
Bonjour a tous,
Pour des besoins bien spécifique (calculer la position du soleil a 0.001 degrés prêt), j'utilise du code en C.
Pour être honnête je suis pas capable de le convertir en C#.
Bref j'en fait un DLL, je l'utilise dans mon code C#, tout marche en debug chez moi, et... des que je compile le projet (release et non debug donc), ça ne marche plus! En gros j'ai un problème (je crois) dans la config du projet, ça doit faire 3 mois que je tourne autour du sujet, et je ne comprend pas...
Pour exposer mon problème, j'ai créé (voir ci joint) une solution minimaliste: le projet DLL avec le fameux code + un mini projet C# qui utilise la DLL, affiche le résultat (ainsi que le résultat attendu).
Pour finir, mes contrainte sont: .NET 2.0 (pour être compatible win XP SP1 natif) + compatible 32 et 64bit.
Voila, je sais que ma question n'est pas simple (devoir regarder un fichier joint pour comprendre...), mais je n'ai pas mieux a proposer (meme si je suis ouvert a toute solution).
Merci d'avance!
-
Salut,
il semble que l'optim' de compilation de ta DLL fait souci.
Si tu la fais sauter en Release ça devrait fonctionner.
Maintenant il serait plus intéressant de comprendre le pouquoi du comment du keskekoi, j'avoue.
-
Bonjour,
Effectivement, il semblerait que les optimisations du code C soient la cause du bug. Il reste à déterminer exactement d'où provient le soucis.
Est-ce le code en C lui même qui bug lorsqu'il est optimisé. Il suffit de faire un programme en C pour le vérifier. Si tout fonctionne, c'est que c'est au niveau de l'interopérabilité que cela à des conséquences. On pourrait imaginer par exemple que la représentation de la structure en mémoire soit modifiée par les optimisations...
-
Bonjour, et merci de vos réponses.
Je vous prie de bien vouloir excuser cette réponse tardive, j’étais persuade d'avoir déjà poste un premier 'merci des conseils' dans la foulé.
J'ai effectivement passé ces trois derniers mois a jouer avec les paramètres comme l'optimisation du code C (ça m'a un peut débloquer), mais j'avais toujours d'autres problèmes: des dépendances vis a vis d'autres dll sur certains ordinateur, la gestion du 32/64 bit, et j'en passe...
Bref j'ai pris le taureau par les cornes et j'ai converti le tout en C#. Bref, après compilation, je me retrouve avec un seul fichier '.exe', et comme je me suis forcé a utiliser .NET 2.0 -> compatible tous Windows a partir de XP.
La morale, pour ma part, sera: les DLL, c'est possible, ça marche (mais attention aux dépendances), mais coder en full C#, c'est tellement mieux!