Faits :
A.
Par jugement du 26 janvier 2017, le Tribunal de police de l'arrondissement de l'Est vaudois a libéré X._ du chef d'accusation d'escroquerie, a renvoyé la partie plaignante à agir devant le juge civil et a mis les frais de procédure par 27'844 fr. 40 (dont 11'392 fr. 60 (4'000 déjà versés) à titre d'indemnité due au défenseur d'office) à la charge de X._.
B.
Statuant le 8 mai 2017, la Cour d'appel pénale du Tribunal cantonal vaudois a rejeté le recours formé par X._ contre ce jugement, qu'elle a confirmé.
Les faits à l'origine de la procédure sont en substance les suivants.
En 2011, la Fondation du Château de A._ a chargé la société B._ Sàrl, dont X._ était l'unique associé gérant, d'équiper le château en matériel informatique performant, comprenant notamment l'installation de Wi-Fi destiné aux visiteurs. En septembre 2012, à la suite d'un contrôle de sécurité effectué par une société mandatée par la fondation, il a été constaté que le matériel livré et installé par B._ Sàrl ne correspondait pas à celui facturé. De plus, le Wi-Fi n'était pas accessible aux visiteurs du château, les heures facturées étaient exagérées, les licences Adobe n'étaient pas disponibles, l'extension de garantie n'avait pas été octroyée, les postes informatiques n'étaient pas assez performants et ne disposaient pas d'une capacité de stockage suffisante; enfin, du matériel avait été facturé alors qu'il n'avait été ni livré ni installé.
C.
X._ forme un recours en matière pénale au Tribunal fédéral contre le jugement de la Cour d'appel pénale. Il conclut, avec suite de dépens, principalement à la réforme du jugement attaqué en ce sens que les frais de la procédure pénale, y compris ceux de la procédure d'appel et notamment les indemnités dues à son défenseur d'office sont laissés à la charge de l'Etat. A titre subsidiaire il conclut à l'annulation du jugement attaqué et au renvoi de la cause à la cour cantonale pour qu'elle statue à nouveau.

Considérant en droit :
1.
Le recourant reproche à la cour cantonale d'avoir violé les art. 426 al. 2 et 428 CPP en mettant à sa charge les frais de la procédure pénale et de la procédure d'appel alors qu'ils auraient dû être laissés à la charge de l'Etat.
1.1. Conformément à l'<ref-law>, lorsque la procédure fait l'objet d'une ordonnance de classement ou que le prévenu est acquitté, tout ou partie des frais de procédure peuvent être mis à sa charge s'il a, de manière illicite et fautive, provoqué l'ouverture de la procédure ou rendu plus difficile sa conduite.
La condamnation d'un prévenu acquitté à supporter tout ou partie des frais doit respecter la présomption d'innocence, consacrée par les art. 32 al. 1 Cst. et 6 par. 2 CEDH. Celle-ci interdit de rendre une décision défavorable au prévenu libéré en laissant entendre que ce dernier serait néanmoins coupable des infractions qui lui étaient reprochées. Une condamnation aux frais n'est ainsi admissible que si le prévenu a provoqué l'ouverture de la procédure pénale dirigée contre lui ou s'il en a entravé le cours. A cet égard, seul entre en ligne de compte un comportement fautif et contraire à une règle juridique, qui soit en relation de causalité avec les frais imputés (<ref-ruling> consid. 1b p. 334; <ref-ruling> consid. 2c p. 168; arrêt 6B_957/2017 du 27 avril 2018 consid. 2.2 destiné à la publication).
Pour déterminer si le comportement en cause est propre à justifier l'imputation des frais, le juge peut prendre en considération toute norme de comportement écrite ou non écrite résultant de l'ordre juridique suisse pris dans son ensemble, dans le sens d'une application par analogie des principes découlant de l'<ref-law>. Le fait reproché doit constituer une violation claire de la norme de comportement (ATF 119 la 332 consid. 1b p. 334; arrêt 6B_957/2017 précité consid. 2.2). Une condamnation aux frais ne peut se justifier que si, en raison du comportement illicite du prévenu, l'autorité était légitimement en droit d'ouvrir une enquête. Elle est en tout cas exclue lorsque l'autorité est intervenue par excès de zèle, ensuite d'une mauvaise analyse de la situation ou par précipitation; la mise des frais à la charge du prévenu en cas d'acquittement ou de classement de la procédure doit en effet rester l'exception (ATF <ref-ruling> consid. 2c p. 170 s.; arrêt 6B_957/2017 précité consid. 2.2; cf. <ref-law>).
1.2. Le recourant soutient qu'on ne lui reproche aucun comportement illicite mais uniquement des manquements susceptibles d'engager sa responsabilité contractuelle, ce qui n'est selon lui pas suffisant pour justifier que les frais soient mis à sa charge.
Selon la jurisprudence, la violation des devoirs du mandataire envers le mandant peut justifier que soient mis à la charge du mandataire les frais afférents à une procédure pénale ouverte contre lui notamment pour escroquerie (voir arrêts 6B_556/2017 du 15 mars 2018 consid. 2, 6B_893/2016 du 13 janvier 2017 consid. 3.3 et 6B_303/2010 du 3 mai 2010 consid. 3.4). C'est en vain que le recourant cherche à remettre en question le dernier arrêt cité au motif qu'il a été rendu en application du § 31 al. 2 StPO/BL; dès lors qu'elle a été confirmée par d'autres arrêts postérieurs à l'entrée en vigueur de l'<ref-law>, cette jurisprudence garde toute sa valeur. Elle est par ailleurs également applicable, mutatis mutandis, aux autres contrats évoqués par la cour cantonale et dont le recourant ne conteste pas qu'ils trouvent application dans le contexte de ses relations avec la partie plaignante. Ainsi, au même titre que le mandataire est, aux termes de l'<ref-law>, responsable envers le mandant de la bonne et fidèle exécution du mandat, l'entrepreneur est, en vertu de l'<ref-law>, soumis aux mêmes règles que le travailleur dans les rapports de travail, ce qui implique qu'il doit exécuter avec soin l'ouvrage qui lui est confié et sauvegarder fidèlement les intérêts légitimes du maître (voir <ref-law>); il est en outre responsable envers le maître de la bonne qualité de la matière qu'il fournit (<ref-law>). Enfin, le vendeur est tenu de livrer à l'acheteur la chose vendue (<ref-law>).
En l'espèce, il ressort des constatations du jugement attaqué que les postes de travail livrés ne correspondaient pas à ce qui était prévu dans les offres et que les disques durs livrés étaient inférieurs tant en nombre qu'en qualité à ce qui était mentionné dans l'offre. En outre, le Wi-Fi installé n'était pas adapté à l'usage prévu, le libellé des éléments facturés ne correspondait à aucun élément référencé par la marque et aucune licence Adobe ni garantie n'était enregistrée auprès des sociétés Adobe et HP. Enfin, le temps facturé pour l'installation du serveur comme du réseau Wi-Fi était nettement excessif. C'est donc à juste titre que la cour cantonale a admis que le recourant avait enfreint à plus d'un titre les engagements contractuels pris envers la partie plaignante et c'est à tort que le recourant lui reproche de n'avoir pas établi de manière suffisamment claire les droits et obligations contractuelles des parties.
Le comportement fautif du recourant était de nature à provoquer l'ouverture de l'action pénale et à justifier les investigations nécessaires pour déterminer si ce comportement était constitutif d'une infraction pénale. Sa condamnation aux frais de la procédure ne viole dès lors pas l'<ref-law> et c'est à juste titre également que la cour cantonale, qui a rejeté son appel, a mis les frais de la procédure de recours à sa charge conformément à l'<ref-law>.
2.
Mal fondé, le recours doit être rejeté. Le recourant, qui succombe, supportera les frais de justice (<ref-law>).

Par ces motifs, le Tribunal fédéral prononce :
1.
Le recours est rejeté.
2.
Les frais de justice, arrêtés à 3'000 fr., sont mis à la charge du recourant.
3.
Le présent arrêt est communiqué aux parties et à la Cour d'appel pénale du Tribunal cantonal vaudois.
Lausanne, le 30 mai 2018
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président : Denys
La Greffière : Paquier-Boinay