ja, Zacherl hat recht:
Die gesamte Konstantenstruktur ist extern in der
DLL festgelegt, sie enthält nicht nur einfache Datentypen, sondern auch Funktionszeiger, die wiederum auf Funktionen innerhalb der
DLL verweisen
Code:
const UA_ClientConfig UA_ClientConfig_default = {
5000, /* .timeout, 5 seconds */
10 * 60 * 1000, /* .secureChannelLifeTime, 10 minutes */
UA_Log_Stdout, /* .logger */
{ /* .localConnectionConfig */
0, /* .protocolVersion */
65535, /* .sendBufferSize, 64k per chunk */
65535, /* .recvBufferSize, 64k per chunk */
0, /* .maxMessageSize, 0 -> unlimited */
0 /* .maxChunkCount, 0 -> unlimited */
},
UA_ClientConnectionTCP, /* .connectionFunc (for sync connection) */
UA_ClientConnectionTCP_init, /* .initConnectionFunc (for async client) */
UA_ClientConnectionTCP_poll_callback, /* .pollConnectionFunc (for async connection) */
0, /* .customDataTypesSize */
NULL, /* .customDataTypes */
NULL, /* .stateCallback */
0, /* .connectivityCheckInterval */
NULL, /* .inactivityCallback */
NULL, /* .clientContext */
#ifdef UA_ENABLE_SUBSCRIPTIONS
10, /* .outStandingPublishRequests */
NULL /* .subscriptionInactivityCallback */
#endif
};
Ich habe auch schon versucht, die Struktur auf der Delphiseite zu füllen und die Funktionszeiger mit leeren Dummyfunktionen versorgt, aber da haut es mir halt nur eine Speicherverletzung um die Ohren.