1.实例DLL
使用下面的程序代码,利用C编译器创建动态链接库"T1_C.dll"。
在这里,您可以下载已经可以编译的DLL。
extern "C" __declspec (dllexport) int aufruf1 (int a);
#include <stdio.h>
#include <windows.h>
FILE *h_test;
FILE *h_trace;
extern "C" __declspec (dllexport) int aufruf1(int a)
{
h_test= fopen ("C:/temp/test_dll.txt","a");
if (h_test)
{
fprintf(h_test, "Function 'aufruf1' was called!n");
fclose (h_test );
}
a+=100;
return a;
};
N.B.
- 必须在无出错信息后,创建动态链接库。
- 所有在WinCC中使用的DLL功能都必须使用相应的语法在DLL的开始部分进行指定(在实例动态链接库"T1_C.dll"的第一行)。
- 为了能够使用DLL功能,在WinCC中的动作或者函数中调用DLL,必须使用"#pragma code"语法。
2. 在WinCC中的C脚本加载"T1_C.dll"动态链接库并且执行"aufruf1"功能
使用下列的WinCC变量:
- var1 (signed 32-bit value)
- result (signed 32-bit value)
在一个按钮的事件的“鼠标单击”C动作中输入下面的C脚本:
#include "apdefap.h"
void OnClick(char* lpszPictureName, char* lpszObjectName, char* lpszPropertyName)
{
#pragma code ("c:/temp/T1_C.dll")
int aufruf1(int a);
#pragma code ()
int value;
value = GetTagDouble("var1"); //Return-Type: double
SetTagDouble("result",aufruf1(value)); //Return-Type: BOOL
}3.结果
图. 01
关键字
函数调用,API
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc336060.html