내 프로젝트를 다른 응용 프로그램에 사용될 DLL에 연결해야합니다. 내 프로젝트는 DLL에서 구조체를 읽고 변수의 값을 변경하고 구조체를 DLL로 반환해야합니다. | 내가 구성 속성에 DBase.lib을 추가 한.h .lib 및 .dll 연결하기
#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
:
이
내 .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;
}
이며,이 내 .H입니다 링커 | 입력 | 추가 종속성 및 구성 속성에 대한 dll 디렉터리 | VC++ 디렉토리 | 라이브러리 디렉토리
내 문제는 다른 응용 프로그램에서 IHMI [1] 값을 수정 한 다음이 프로그램을 사용하여 읽을 때 초기화되지 않은 값 (0)을 읽습니다.
어떤 조언이 있으십니까? dll과 프로그램이 제대로 작동합니까?
참고 : dll은 프로젝트와 다른 폴더에 있습니다. 다른 파일 (.ccp, .h 및 .lib)은 프로젝트 폴더의 같은 폴더에 있습니다.
NOTE2 : 나는 MVS2013 사용하고 -
C++ Win32 콘솔 응용 프로그램 대단히 감사합니다!
두 응용 프로그램은 각각 DLL과 별도의 별도의 데이터 영역을 갖습니다. 당신은 explictyl 데이터를 공유로 표시해야합니다. –
모든 것이 정상이지만 Dll이 어떻게 작동하는지 이해할 수 없습니다. 서로 다른 프로세스에서 실행되는 Dll의 두 인스턴스 간에는 아무런 관련이 없습니다. 파일에 제정신이 필요하거나 프로세스 간 통신을 사용해야합니다. –
[Codeproject] (http://www.codeproject.com/Articles/240/How-to-share-a-data-segment-in-a-DLL)에는 데이터 공유의 예가 있습니다. 그러나이 접근법에는 많은 문제점이 있으며 IPC의 일부 형태가 선호됩니다. –