我有一个使用 MSVC 创建的 dll。头文件和 .def 文件也存在。这是从 dll (simple.def) 导出的内容:
EXPORTS
simple_initialize
simple_step
simple_terminate
In1
Gain
Increment
我有一个简单的应用程序,它试图访问 dll 中的函数和变量(也有 .lib 文件)。MSVC 项目文件提供了必要的文件,并且应用程序可以正确构建。这是应用程序代码:
#include <stddef.h>
#include <stdio.h>
#include "simple.h"
#include "rtwtypes.h"
void main(void)
{
int i;
simple_initialize();
for (i = 0; i < 10; i++)
{
simple_step();
}
simple_terminate();
}
这段代码似乎工作正常,但是,如果我尝试从 dll 写入任何全局变量(In1、Gain 或 Increment),则会导致崩溃。
经过研究,我意识到我可以让它工作的唯一方法是添加
__declspec(dllimport) real_T In1;
并从头文件中注释掉这一行:
extern real_T In1;
如果我不评论这一行,那么我会收到以下错误:
错误 C2370 'In1':重新定义;不同的存储类 SimpleTest \SimpleTest.c 8