loiclm86
Messages postés21Date d'inscriptiondimanche 5 avril 2009StatutMembreDernière intervention 3 février 2010
-
20 juil. 2009 à 18:21
loiclm86
Messages postés21Date d'inscriptiondimanche 5 avril 2009StatutMembreDernière intervention 3 février 2010
-
21 juil. 2009 à 15:50
Bonjour à tous,
Je souhaite réaliser des programmes ou j'appelle une dll crée via visual studio en C++ pour un client VBA-Excel. J'essaie donc de commencer par un programme tout simple et d'appliquer les tutoriaux que j'ai vu sur internet sur le sujet.
Ici, mon programme VBA va prendre un nombre dans une case excel (7.1 par exemple) et appeler la dll qui va multiplier ce nombre par 2. On veut donc avoir au sortir de la macro VBA le nombre 14.2.....
Je crée donc une console Win32 dans VStudio en mode "dll" vide. Je crée un .cpp qui prend un double en entrée et renvoie cette somme multipliée par 2:
Je compile, j'obtiens un .dll et un .lib au path suivant:
"C:\Documents and Settings\ut15q5\Desktop\prog\projet_test2\debug\projet_test5.dll"
Puis dans Excel, j'écris ceci:
Private Declare Function multip Lib "C:\Documents and Settings\ut15q5\Desktop\prog\projet_test2\debug\projet_test5.dll" _
(ByVal n As Double) As Double
Public Function mult() As Double
mult = multip(Cells(9, 10).Value)
End Function
ET JE RECOIS COMME ERREUR EN VOULANT COMPILER:
"Run Time error '49':
Bad DLL calling convention"
Les arguments sont pourtant bien les mêmes. Qu'est-ce qui ne va pas ?
comme tu l'indique mais à la compilation, j'ai mtn l'erreur:
"fatal error LNK1168: cannot open C:\(...blabla...)\projet_test5.dll for writing"
Visiblement, c'est un problème de droit d'écriture. Je n'ai jamais vu ça sur visual. C'est étrange ! De plus, hier soir, j'ai essayé la même chose sur code::blocks et j'ai eu le même problème : il y avait le message d'erreur : "permission denied".
loiclm86
Messages postés21Date d'inscriptiondimanche 5 avril 2009StatutMembreDernière intervention 3 février 2010 21 juil. 2009 à 12:21
je quitte Excel et je relance... mais tjs le même message...
Excel se lance avec des add-ins et des projets VBA déjà attachés mais je ne pense pas que cela pose problème. Ou bien ?
loiclm86
Messages postés21Date d'inscriptiondimanche 5 avril 2009StatutMembreDernière intervention 3 février 2010 21 juil. 2009 à 13:40
D'ailleurs en changeant un tout petit peu mon programme, je dois réutiliser unlocker pour recomplier. N'y a-t-il pas moyen de faire ça de façon définitive ?
loiclm86
Messages postés21Date d'inscriptiondimanche 5 avril 2009StatutMembreDernière intervention 3 février 2010 21 juil. 2009 à 13:43
et en plus je dois d'abord quitter excel et le relancer après avoir recompiler sous peine de voir planter excel : pas très robuste comme process. Est-il possible d'éviter tout ça ?
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 21 juil. 2009 à 14:07
Fais une copie de ta DLL stable et fais-la utiliser par ton application VBA uniquement. Comme ça tu peux recompiler ta DLL C tant que tu veux sans être ennuyé. Après, quand tu juges que ta DLL est fonctionnelle, tu écrases la copie.