MT4とdllについて質問。 dllの作成をしております。MT4のEAから引き渡された文…

MT4とdllについて質問。
dllの作成をしております。MT4のEAから引き渡された文字列をあらかじめ設定してある文字列と比較して真偽を返すという単純なものなのですが、うまく動作しません。

文字列の比較が出来ていないようです。
環境: Windows10(32bit)、Visual C++ 2010 Express、文字セットはUnicodeに、charはwchar_tに、""はL""に変更しています。
何かヒントなどいただけると幸いです。

#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#define MT4_EXPFUNC __declspec(dllexport)
MT4_EXPFUNC bool Test(wchar_t* str)
{
setlocale( LC_ALL, "JPN&qu ot; );
if(str==L"Hello") return(true);
return(false);
}

MT4側の呼び出しはこちらです。
#import "Test.dll"
bool Test(string str);
#import
void OnTick()
{
Comment(Test("Hello"));
return;
}

回答1

『文字列の比較が出来ていないようです』とのこと。あ、ここですね。

【修正前】if(str==L"Hello") return(true);
【修正後】if(lstrcmpW(str, L"Hello") == 0) return(true);

これで大丈夫。

《ご参考》

大文字小文字を区別しない場合は lstrcmpiW を使用します。

回答2

悪徳商材販売屋だな。

薄汚い金儲けの為に中みの無いゴミを売ろうなどとするな。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA