※ ChatGPTを利用し、要約された質問です(原文:C++/CLI 関数がインポートできない)
C++/CLI関数のインポートエラー
このQ&Aのポイント
Visual C++でビルドすると、ConnectionWraps::Class1::GetConnectionのインポートに失敗するエラーが発生します。
DLL側のConnectionWraps.hファイルには、ConnectionWraps::Class1クラスとそのメソッドが定義されています。
実行ファイル側のConnectionWrapsTest.cppファイルで、Class1::GetConnectionを呼び出していますが、エラーが発生しています。
Visual C++でビルドすると、
1>ConnectionWrapsTest.cpp(12): warning C4679: 'ConnectionWraps::Class1::GetConnection' : メンバーをインポートできませんでした
1> 型 'ConnectionWraps::Class1 ' をアセンブリ 'ConnectionWraps, Version=1.0.4594.40998, Culture=neutral, PublicKeyToken=null' からインポート中に、この診断が発生しました。
という様なエラーがいくつかでて、失敗してしまいます。
何故この様なエラーが出るのか理解出来ません。解決策を教えてください。
DLL側
-------------------------------------------
// ConnectionWraps.h
#pragma once
using namespace System;
using namespace std;
#include <string>
namespace ConnectionWraps {
public ref class Class1
{
// TODO: このクラスの、ユーザーのメソッドをここに追加してください。
public:
static int GetConnection(string address, string port, string database, string userid, string password);
static void CloseConnection(int handle);
static int ChangeDatabase(int handle, string databaseName);
static int Command(int handle, string sql);
};
}
--------------------------------------------------
実行ファイル側
----------------------------------------------------
// ConnectionWrapsTest.cpp : メイン プロジェクト ファイルです。
#include "stdafx.h"
#include <string>
using namespace std;
using namespace System;
using namespace ConnectionWraps;
int main(array<System::String ^> ^args)
{
Console::WriteLine(Class1::GetConnection("a", "a", "a", "a", "a", "a"));
return 0;
}
-------------------------------------------------
お礼
ありがとうございました。
補足
ご指摘のとおり数の数が違うようなのでコードを直してソリューションをリビルドしたのですがほぼ同じエラーが出てきたので、どうやら原因は違うようです。いったい何故エラーが出るのでしょうか? エラー↓ ---------------------------------------------- 2>ConnectionWrapsTest.cpp(12): warning C4679: 'ConnectionWraps::Class1::GetConnection' : メンバーをインポートできませんでした 2> 型 'ConnectionWraps::Class1 ' をアセンブリ 'ConnectionWraps, Version=1.0.4595.35059, Culture=neutral, PublicKeyToken=null' からインポート中に、この診断が発生しました。 2>ConnectionWrapsTest.cpp(12): warning C4679: 'ConnectionWraps::Class1::ChangeDatabase' : メンバーをインポートできませんでした 2> 型 'ConnectionWraps::Class1 ' をアセンブリ 'ConnectionWraps, Version=1.0.4595.35059, Culture=neutral, PublicKeyToken=null' からインポート中に、この診断が発生しました。 2>ConnectionWrapsTest.cpp(12): warning C4679: 'ConnectionWraps::Class1::Command' : メンバーをインポートできませんでした 2> 型 'ConnectionWraps::Class1 ' をアセンブリ 'ConnectionWraps, Version=1.0.4595.35059, Culture=neutral, PublicKeyToken=null' からインポート中に、この診断が発生しました。 2>ConnectionWrapsTest.cpp(12): error C2039: 'GetConnection' : 'ConnectionWraps::Class1' のメンバーではありません。 2> c:\users\inv\documents\visual studio 2010\projects\connectionwraps\debug\connectionwraps.dll : 'ConnectionWraps::Class1' の宣言を確認してください。 2>ConnectionWrapsTest.cpp(12): error C3861: 'GetConnection': 識別子が見つかりませんでした --------------------------------------------------------