01-30-2023 10:57 PM
構造体にstring型を入れたdllプログラムを作成したところ強制終了となりました。
また、dllプログラムで参照として、string型を出力したところ文字化けが発生しました。
どのようなdllプログラムだとstring型を扱えるようになるのでしょうか。
下記がdllプログラムのコードになります。
c++で作成しました。
//#include "stdafx.h"
//#include "extcode.h"
#include <windows.h>
#include<iostream>
#include <string>
//using namespace std;
typedef struct{
double in1;
//std::string in2;
}TD1;
_declspec(dllexport) void String_check(TD1* input, TD1* output, std::string* mozi);
_declspec(dllexport) void String_check(TD1* input, TD1* output, std::string* mozi)
{
output->in1 = input->in1 * 2;
//output->in2 = "12345";
*mozi = "12345";
}
01-31-2023 03:26 AM - edited 01-31-2023 03:27 AM
A C++ data type can NOT be transferred from LabVIEW to a DLL and back! Period!
The main reason is that C++ object classes are not standardized in terms of memory layout. Each compiler tends to do its own memory layout. This also means that you can generally not call a C++ DLL created in compiler A by a program created in compiler B, unless you restrict the interface between the two to pure C datatypes.