Visual StudioでC++でプログラミングしています。DLLで使用されているときに実行コードが動作しない
これはバックdouble配列から私に特定の値を与え、私のサブルーチン、次のとおりです。
double specific_value_search(std::string mol_fractions_name[], std::string mass_fractions_name_output[], double mass_fractions_output[], int molecule)
{
double specific_value=5;
std::string a = mol_fractions_name[molecule];
std::string b;
for (int i = 0; i <= 11; i++)
{
b = mass_fractions_name_output[i];
if (a.compare(b) == 0)
//if ((a.find(b) != std::string::npos))...this was my second try // sollte string b in Zeile a gefunden werden, dann...
{
specific_value = mass_fractions_output[i];
break;
}
}
return specific_value;
}
私は.exeファイルに私のプロジェクトでは、このコードを実行するときに、コードは正常に動作します。 私はそれをdllにコンパイルするとき、外部プログラムを介してそれを実行すると、初期化されていないので、値は5を返す。初期化されていない変数を返そうとするとプログラムがクラッシュする。
私は値
下のスクリーンショットでは、視覚スタジオから誰もが何かアドバイスはありますか?
Screenshot 1 - values from visual studio
Screenshot 2 - values from visual studio
少なくとも、その方法をどのように表示するかを[mcve]にすることはできますか? – user463035818
'std :: string'を使うつもりならば、' std :: vector 'はなぜですか?境界チェックを行う方法がないので、渡された配列の境界チェックは絶対に行いません。 'std :: vector'では、少なくともこれらのことを行うには' size() '、' at() 'などがあります。 –
PaulMcKenzie
'operator =='を 'std :: string'と一緒に使うことができます。あなたは' compare'メソッドを使う必要はありません。 –