質問

私は現在、ARMプロセッサであるTIのOMAPプロセッサ、上のWindows CE用のアプリケーションを開発しています。私は関係なく、私が使用しているデータタイプ、単にCの#からC ++ DLLファイル内の関数を呼び出していないと私は常に0バックの値を取得しようとしています。これは、最も可能性の高い大会の不一致を呼び出すいくつかの種類のですか?私は、DLLと同じVisual Studioのソリューションからの主なEXEをコンパイルしています。

C#コードスニペットます:

public partial class Form1 : Form
{
    private void button1_Click(object sender, EventArgs e)
    {
        byte test = LibWrap.test_return();
        MessageBox.Show(test.ToString());
    }
}

public class LibWrap
{
    [DllImport("Test_CE.dll")]
    public static extern byte test_return();
}

C ++ DLLコードスニペットます:

extern "C" __declspec (dllexport) unsigned char test_return() {
    return 95;
}
役に立ちましたか?

解決

私が変更されたときに

これは、働いていた。

extern "C" __declspec (dllexport) unsigned char test_return() {
    return 95;
}

タグに
extern "C" __declspec (dllexport) unsigned char __cdecl test_return() {
    return 95;
}

DLLコードで。ひるみのためにコンパイルされた場合、それはこのことを想定していないのはなぜ私を超えている。

他のヒント

()は次のようtest_returnエクスポートしてください

unsigned char __declspec(dllexport) WINAPI test_return() {
   return 95;
}
  

どこかWINAPIは以下のように定義されています   __stdcallそれがされているべき場所__cdecl

はありません。 WINAPIは__stdcallとして定義されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top