0

Visual C ++、. NET、およびWindowsのプログラミングの世界(Objective-C / Cocoaから提供)を初めて使用し、.libにコンパイルしたCFLite(Open CoreFoundation Lite)ライブラリを使用しようとしています。ファイル。純粋なアンマネージドCで記述されており、マネージドCLR.NETアプリで使用したいと思います。リンクして__CFStringMakeConstantStringのショートカットである関数CFSTRを使用しようとすると、ひどく失敗します。何かアドバイス?添付されているのはエラーです。

Proj.obj : error LNK2031: unable to generate p/invoke for "extern "C" struct __CFString const * __clrcall __CFStringMakeConstantString(char const *)" (?__CFStringMakeConstantString@@$$J0YMPBU__CFString@@PBD@Z); calling convention missing in metadata
Proj.obj : warning LNK4248: unresolved typeref token (01000016) for '__CFString'; image may not run
Proj.obj : error LNK2028: unresolved token (0A00000B) "extern "C" struct __CFString const * __clrcall __CFStringMakeConstantString(char const *)" (?__CFStringMakeConstantString@@$$J0YMPBU__CFString@@PBD@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)
Proj.obj : error LNK2019: unresolved external symbol "extern "C" struct __CFString const * __clrcall __CFStringMakeConstantString(char const *)" (?__CFStringMakeConstantString@@$$J0YMPBU__CFString@@PBD@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)

更新:とにかくユーザーインターフェイスが最小限になるため、Win32呼び出しを使用するネイティブアプリケーションを使用することになりました(これはバックグラウンドアプリです)。私はp/invokeで少し遊んだのですが、私のような初心者にとっては複雑に思えました:pありがとう!

4

3 に答える 3

1

http://www.codeproject.com/KB/mcpp/timeserver.aspx

于 2009-05-24T23:06:08.780 に答える
1

Cライブラリの関数シグネチャと比較して、マネージC++アプリで使用している関数シグネチャに不一致があるようです。

.Netがマネージドワールドとアンマネージドワールドの間の通信に使用するテクノロジーはPInvokeです。PInvokeの使用方法の例として最適なリソースは、pinvoke.netです。C関数のシグネチャは非常に単純に見えるため、パラメータが正しくマーシャリングされたC++で一致するシグネチャを作成するのは簡単です。

于 2009-05-24T23:46:19.107 に答える
0

アンマネージからマネージコードを操作する方法は、DLLを作成するか、COMを操作することです。

于 2009-05-24T23:14:08.390 に答える