# Open62541 V1.2.2 Windows DLL's



## Lazarus™ (23 Dezember 2021)

Hallo,
hat jemand die aktuelle Version (v1.3-rc1) oder die Version (1.2.2) als Windows DLL's (32 und 64 Bit) und würde mir die mailen ?
Ich habe keine Möglichkeit mir die DLL's selber zu erstellen aus dem Open62541-Sourcecode.

Vielen Dank schon mal und schöne Weihnachtstage euch Allen


----------



## Thomas_v2.1 (24 Dezember 2021)

Da gibt es ja noch einen ganzen Schwung von Übersetzungsoptionen. Ich könnte dir die erzeugen, aber dann eben ohne besondere Einstellungen, nur als Release.


----------



## Lazarus™ (24 Dezember 2021)

Hallo Thomas,
das wäre richtig toll. Besondere Einstellungen brauche ich wahrscheinlich nicht, es sei denn für ConnectUsername muss man da schon
etwas anpacken (?). Toll wären beide 32 und 64 Bit...

Also wirklich, tausend dank!


----------



## Thomas_v2.1 (24 Dezember 2021)

Ich habe es jetzt ohne besondere Einstellungen übersetzt. Und zwar mit VS2019, es kann sein dass du auf den Zielsystem dann noch ein entsprechendes VC Redistributable Package benötigst.


----------



## Lazarus™ (24 Dezember 2021)

Hallo Thomas,
vielen Dank!  

Ich habe es auch selber mal probiert und mir ein VS etc. installiert und es ist wie verhext...
Deine und auch meine V1.2.2 32Bit funktionieren scheinbar korrekt die 64Bit von dir und von mir nicht. 

Wie auch immer. Ich nehme erst mal die 32Bit V1.2.2 Version und kann erst mal fröhlich weiter entwickeln.
Das mit den 64ern wird sich sicher auch noch klären. Vielen Dank nochmals, das du dir die Zeit genommen hast.

Frohe Weihnachten dir und deiner Familie. Und bleib gesund !


----------



## Thomas_v2.1 (24 Dezember 2021)

Also ich habe die genauso erzeugt wie ich auch für Wireshark die plugin dlls für 32 und 64 Bit erzeuge, das verwendet auch cmake und VS. Ist deine eigene Anwendung denn auch eine 64 Bit Anwendung?

Ich habe die dlls erzeugt, in dem ich erst die entsprechende Version auschecke, mit:
git checkout tags/v1.2.2

Dann in das open62541 Verzeichnis wechseln, und für 64 Bit:

```
mkdir build64
cd build64
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
cmake -G "Visual Studio 16 2019" -A x64 -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release ..
msbuild /m /p:Configuration=Release /p:Platform=x64 open62541.sln
```

und für 32 Bit:

```
mkdir build32
cd build32
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64_x86
cmake -G "Visual Studio 16 2019" -A Win32 -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release ..
msbuild /m /p:Configuration=Release /p:Platform=Win32 open62541.sln
```

aufrufen. In \bin\Release landen dann die .dll, .exp und .lib


----------



## Lazarus™ (24 Dezember 2021)

Ja ich erstelle immer 2 Versionen eine 32Bit und eine 64Bit Applikation.
Ich habe folgende Wege probiert, mit absolut gleichem Ergebnis (Dateigrößen sind identisch, das Binary/DLL auch):

Weg #1:

```
git clone https://github.com/open62541/open62541.git

cd \Work\open62541
 
:: git checkout tags/v1.2
:: git checkout tags/v1.2.1
:: git checkout tags/v1.2.2
git checkout tags/v1.2.3
:: git checkout tags/v1.3-rc1
:: git checkout tags/master
 
curl -o tools/nodeset_compiler/type_parser.py https://raw.githubusercontent.com/olivluca/open62541/master/tools/nodeset_compiler/type_parser.py

cd \Work\open62541

cmake -A Win32 -S . -B build32_release -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1
cmake --build build32_release --config Release

cd \Work\open62541

cmake -A x64 -S . -B build64_release -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=1
cmake --build build64_release --config Release
```

Weg #2:

```
cd \Work
rmdir /S /Q open62541

git clone https://github.com/open62541/open62541.git

cd \Work\open62541\

:: git checkout tags/v1.2
:: git checkout tags/v1.2.1
:: git checkout tags/v1.2.2
git checkout tags/v1.2.3
:: git checkout tags/v1.3-rc1
:: git checkout tags/master

cd \Work\open62541\

mkdir build64
cd build64
call "d:\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64
cmake -G "Visual Studio 15 2017" -A x64 -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release ..
msbuild /m /p:Configuration=Release /p:Platform=x64 open62541.sln

cd \Work\open62541\

mkdir build32
cd build32
call "d:\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" x64_x86
cmake -G "Visual Studio 15 2017" -A Win32 -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release ..
msbuild /m /p:Configuration=Release /p:Platform=Win32 open62541.sln
```


----------



## Thomas_v2.1 (24 Dezember 2021)

Bei mir sind die auch unterschiedlich groß, die 64 bit ist wie üblich etwas größer. Wenn ich dumpbin darauf loslasse zeigt mit dieser auch machine (x64) sowie den magic PE32+, was für 64 Bit Anwendung steht. Hab leider keinen UA Server greifbar um das mal zu testen.


----------



## Lazarus™ (25 Dezember 2021)

Ja die Plattformen Win32/x64 stimmen, Connect etc. funktionieren auf beiden Plattformen.
Nur zum Beispiel die Funktion: 

```
function UA_Client_ReadValueAttribute(client: PUA_Client; const NodeId: UA_NodeId; out OutValue: UInt16): UA_StatusCode; overload;
var
  Value: Open62541.UA_Variant;
begin
  Open62541.UA_Variant_Init(Value);
  Result := Open62541.__UA_Client_ReadAttribute(Client, @NodeId, Open62541.UA_ATTRIBUTEID_VALUE, @Value, @Open62541.UA_TYPES[UA_TYPES_VARIANT]);
  if Result = Open62541.UA_STATUSCODE_GOOD then begin
    if Open62541.UA_Variant_HasScalarType(@Value, @Open62541.UA_TYPES[UA_TYPES_UINT16]) then
      (* HIER KOMME ICH NOCH AN, OHNE PROBLEM *)
      OutValue := Open62541.PUA_UINT16(Value.Data)^
      (* Value._type.typeId etc. stimmen *)
      (* ABER IM Value.Data ist NULL*)
    else
      Result := Open62541.UA_STATUSCODE_BADTYPEMISMATCH;
  end;
  Open62541.UA_Variant_Clear(Value);
end;
```

*Im Moment habe ich keinen blassen Schimmer, was da das Problem ist...*


----------

