我是 Visual C++、.NET 和 Windows 编程世界(来自 Objective-C/Cocoa)的新手,我正在尝试使用我编译为 .lib 的 CFLite(Open CoreFoundation Lite)库文件。它是用纯非托管 C 语言编写的,我想在我的托管 CLR .NET 应用程序中使用它。当我尝试链接它并使用函数 CFSTR(__CFStringMakeConstantString 的快捷方式)时,它严重失败。有什么建议吗?附上错误。
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 谢谢!