我必须将我的项目链接到将用于其他应用程序的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;
}
这是我的.h:
#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添加到Configuration Properties |链接器|输入|额外的依赖关系 和配置属性的dll目录VC ++目录|图书馆目录
我的问题是我用其他应用程序修改了IHMI [1]的值,然后当我用这个程序读取它时,我读取了未初始化的值(0)。
任何建议?是dll和程序喜欢得当吗?
注意:dll与项目位于不同的文件夹中。其他文件(.ccp,.h和.lib)位于项目文件夹的同一文件夹中。
注意2:我正在使用MVS2013 - C ++ Win32控制台应用程序
非常感谢!
答案 0 :(得分:0)
谢谢大家! 我想我已经解决了这个问题。我已将dll路径添加到Configuration Properties |调试|环境PATH = C:\其中\ is_the \ dll;%PATH% 我确信我正在编写并使用我的程序和应用程序读取相同的结构。