ケースは次のとおりです。
私は以下のようにfunction1を内部に持つdllを作成しました:
int function1( char *inVal, char *outVal)
{
....
strcpy(outVal,dn.commonname.c_str());
}
最後の行で、outValは文字列であるdn.commonnameを指しています。
このdllをLoadLibraryを使用して別のdllに正常にロードしました。2番目のdllには次のものがあります。
int function1(string inval, string &outVal)
{
typedef int (WINAPI *func1Ptr)(char *, char *);
char outValPtr[128] = {0};
int retVal = func1Lnk((char *)inVal.c_str(), outValPtr);
string outVal = outValPtr;
}
ここで、コードに2番目のdllをロードし、fnuction1を呼び出していますが、関数の2番目の引数を確認すると、NULLが返されます。
誰かがこれに光を当てることができますか?
編集-1
コードを次のように変更しました。
int function1(string inVal, string &outVal)
{
typedef int (WINAPI *func1Ptr)(char *, char *);
char outValPtr[128] = {0};
int retVal = func1Lnk((char *)inVal.c_str(), outValPtr);
outVal = outValPtr;
}
しかし、問題は解決しませんでした。どんな手掛かり?