質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

1回答

1678閲覧

C#のdllをC++で呼び出す関数をビルドしたらエラーが出てしまいました。

yukinori

総合スコア23

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/02/01 01:45

Visual studio community 2019で作成しました。(超初心者です)
以下のソースがエラー発生した箇所です。(← ここの”)”に~が出て”CS1001 識別子がありません”)
エラー回避方法お願いします。

-----C#側のDLLソースコード(Program.cs)------
using System.Runtime.InteropServices;

namespace CallDll1
{
class Program
{
[StructLayout(LayoutKind.Sequential, Pack = 4)]
private struct STPart
{
[MarshalAs(UnmanagedType.I1)]
public bool boA;
public int iB;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public byte[] c1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)]
public byte[] c2;
public double d1;
}

[StructLayout(LayoutKind.Sequential, Pack = 4)] private struct STMain { [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] public STPart[] stPart; } [DllImport("DLL.dll", EntryPoint = "foo", SetLastError = false)] private static extern int foo(ref STMain); ← ← ここの”)”に~が出て”CS1001 識別子がありません” static void Main(string[] args) { STMain stM = new STMain(); int i; for (i = 0; i < 10; i++) { stM.stPart[i] = new STPart(); stM.stPart[i].boA = false; stM.stPart[i].iB = 10; stM.stPart[i].d1 = 9.9; foo(ref stM); } } }

}
---C++側のソース(Dll1.cpp)---
#include "Dll1.h";
void foo(STMain* sCPP)
{
sCPP->sPart[0].c1[0] = 5;
}
---C++側のヘッダ(Dll1.h)---
typedef struct {
bool boA;
int iB;
char c1[256];
char c2[256];
double d1;
} STPart;

typedef struct {
STPart sPart[10];
} STMain;

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/02/01 02:08

質問は編集できます 無駄な質問は建てないで追記修正しましょう
guest

回答1

0

private static extern int foo(ref STMain); ← ← ここの”)”に~が出て”CS1001 識別子がありません”

上記ですが、引数を書いていないだけですね。

private static extern int foo(ref STMain sCPP);

投稿2020/02/01 04:48

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問