Связывание .h .lib и .dll

Я должен связать свой проект с DLL, которая будет использоваться для другого приложения. Мой проект должен прочитать структуру из библиотеки DLL, изменить некоторые значения ее переменных и вернуть структуру в библиотеку DLL.

Это мой .ccp

#include "stdafx.h"#include <iostream>
#include "dbase.h"
#pragma comment(lib, "DBase.lib")

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
int a;
cout << DBASE.IHMI[1] << "\n";
//DBASE.IHMI[1] = 22;
cin >> a;
return 0;
}

а это мой .ч:

#ifndef DBASE_H
#define DBASE_H

typedef signed char L1;
typedef short int I2;
typedef int I4;
typedef float R4;

#pragma pack(1)
typedef struct _DBASESTRUT {.......} DBASESTRUT;
#pragma pack()

#ifdef __cplusplus
extern "C"{
#endif
__declspec(dllimport) extern DBASESTRUT DBASE;
#ifdef __cplusplus
}
#endif

#endif

Я добавил DBase.lib в Свойства конфигурации | Линкер | Вход | Дополнительные зависимости
и каталог dll для свойств конфигурации | VC ++ Каталоги | Библиотечные каталоги

Моя проблема в том, что я изменяю значение IHMI [1] с другим приложением, а затем, когда я читаю его с помощью этой программы, я читаю неинициализированное значение (0).

Любой совет? dll и программа понравились должным образом?

ПРИМЕЧАНИЕ: DLL находится в другой папке, чем проект. Другие файлы (.ccp, .h и .lib) находятся в той же папке, что и папка проекта.

ПРИМЕЧАНИЕ 2. Я использую MVS2013 — консольное приложение C ++ Win32.

Большое спасибо!

0

Решение

Спасибо всем!
Я думаю, что я решил проблему. Я добавил путь к DLL в свойствах конфигурации | Отладка | Среда PATH = C: \ where \ is_the \ dll;% PATH%
Я уверен, что пишу и читаю одну и ту же структуру, используя мою программу и приложение.

0

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector