【发布时间】:2013-01-06 04:34:28
【问题描述】:
我绑定的 Objective C 库中有一些 C 风格的函数,我需要在我的应用程序中访问这些函数。是否可以以任何方式将这些添加到绑定中,以便我可以在我的 C# 应用程序中访问它们?
来自 Cocos2d 的示例:
void ccGLActiveTexture( GLenum textureEnum )
{
#if CC_ENABLE_GL_STATE_CACHE
NSCAssert1( (textureEnum - GL_TEXTURE0) < kCCMaxActiveTexture, @"cocos2d ERROR: Increase kCCMaxActiveTexture to %d!", (textureEnum-GL_TEXTURE0) );
if( (textureEnum - GL_TEXTURE0) != _ccCurrentActiveTexture ) {
_ccCurrentActiveTexture = (textureEnum - GL_TEXTURE0);
glActiveTexture( textureEnum );
}
#else
glActiveTexture( textureEnum );
#endif
}
编辑
链接到带有我正在尝试导入的函数的标题: http://www.cocos2d-iphone.org/api-ref/2.0.0/cc_g_l_state_cache_8h_source.html
我在我的 Extras.cs 中尝试过这个
public partial class CCGLProgram {
[DllImport("__Internal")]
public static extern void ccGLUseProgram( uint program );
public static void CCGLUseProgram(uint test)
{
ccGLUseProgram(test);
}
}
不幸的是,我收到了一个找不到入口点的错误。我想我的第一个想法可能是函数被破坏了,但我想既然'extern C'在那里不应该发生?谁能帮帮我?
【问题讨论】:
-
像什么?展示“Objective C 中的 C 风格函数”的示例
-
你是指 GLenum 类型还是函数本身?
-
您是否尝试过将您的代码编译为 DLL,并在您的 DLL 中将您想从 C# 调用的任何函数作为 EXPORT?我在这里没有得到你的确切问题。如果您只想从 C# 调用一个用 C++ 编码的函数,则必须将其编译为 DLL,进行导出并从 C# 调用导出的函数。
-
我从这里 github.com/mono/monotouch-bindings 使用 Cocos2d 的目标 c 绑定。但是,它不包括我需要的所有功能,所以我一直在添加到 ApiDefinition。添加 Objective C 类/函数对我来说很容易,但 Cocos2d 还包括重要的 C 函数,就像您在上面看到的那样。我不知道如何将它添加到 ApiDefinition,或者是否可能。我只是好奇将它添加到绑定的最佳方法是什么,以便我可以从包含 cocos2d dll 的 C# 项目中引用上述 C 函数。 (而且我确实有一个 DLL)
-
你的 c++ 编译器是什么?你使用任何 IDE 吗?
标签: c# objective-c c binding xamarin.ios