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