J'ai été capable de compiler une bibliothèque dll en suivant les instructions indiquées dans ce tutoriel http://tutplusplus.blogspot.com/2011/04/c-tutorial-create-dll-in-vc-20102008.html. Je l'ai compilé et il n'y a pas de problèmes. J'ai également testé ma bibliothèque dll sur une solution d'application de console Win32 vide et il compilé correctement en ajoutant l'en-tête, le fichier source et en modifiant les paramètres de l'éditeur de liens. Le problème est que je ne peux pas utiliser la bibliothèque dll cette fois sur une solution Universal Windows App. J'ai ajouté l'en-tête et les fichiers source ainsi que les paramètres de l'éditeur de liens. Lorsque j'ai compilé la solution du projet, il m'a demandé d'inclure pch.h
dans le fichier source de ma bibliothèque, donc j'ai ajouté la ligne #include "pch.h"
.Utilisation d'une bibliothèque DLL win32 sur une application Windows universelle C++
Ensuite, d'autres erreurs de compilation sont apparues.
'CreateFile': identifier not found
et 'SetCommState': identifier not found
je crois que le compilateur pour ma solution actuelle de projet de tout recompilé à nouveau sans tenir compte de la compilation de la bibliothèque dll. Comment puis-je faire que la solution de projet compile ses propres fichiers source et en-tête?
Lib tête:
#pragma once
#include <Windows.h>
namespace nmspace
{
class SerialPort
{
public:
static __declspec(dllexport) int connect();
};
}
Lib Source:
#include <iostream>
using namespace std;
#include "SimpleH.h"
#include <Windows.h>
namespace nmspace
{
int SerialPort::connect()
{
int error = 0;
DCB dcb;
memset(&dcb, 0, sizeof(dcb));
dcb.DCBlength = sizeof(dcb);
dcb.BaudRate = 57600;
dcb.Parity = NOPARITY;
dcb.fParity = 0;
dcb.StopBits = ONESTOPBIT;
dcb.ByteSize = 8;
HANDLE m_serialPortHandle = CreateFile(L"COM7", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, NULL, NULL);
if (m_serialPortHandle != INVALID_HANDLE_VALUE) {
if (!SetCommState(m_serialPortHandle, &dcb))
error = 2;
}
else
error = 1;
return error;
}
}
merci, que diriez-vous de 'setcommstate' pour les applications upw? désolé je ne veux pas utiliser la bibliothèque 'serialdevice' de uwp et je voulais le créer par moi-même – Gibs
Est-ce que' setcommstate' est quelque chose de différent de 'SetCommState'? – VTT
Ils sont pareils. C'est juste que 'SetCommState' ne fonctionne pas dans UWP. – Gibs