试图在MonoTouch中链接静态库,得到“错误:你应该只提供一个根组件”

时间:2011-01-13 02:35:39

标签: iphone mono xamarin.ios

我需要在本机代码中创建一些从我的MonoTouch应用程序调用的函数。我已经尝试了很多变化来实现这一点,但我总是得到,“错误:我应该只提供一个根组件”,当我尝试构建时。

以下是我尝试此操作的步骤:

创建一个简单的MyFile.cpp文件:

extern "C"
{
   int TestAdd( int a, int b );
}

int TestAdd( int a, int b )
{
    return a+b;
}

将其构建为.a文件:

  

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2   -arch armv6 -c MyFile.cpp

     

/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool   -static -arch_only armv6 MyFile.o -o libtest.a

将libtest.a复制到我的MonoTouch项目文件夹中并将其添加到项目中。

在项目选项 - > iPhone Build下,将额外参数设置为“-ltest”。

..我不断收到“错误:你应该只提供一个根组件”。我甚至没有使用DllImport(“__ Internal”))属性或尝试在我的代码中调用TestAdd。

我在这里做错了什么?

2 个答案:

答案 0 :(得分:6)

你的额外论据是错误的,它们应该是这样的:

-gcc_flags“-L $ {ProjectDir} -ltest -force_load $ {ProjectDir} /libtest.a”

答案 1 :(得分:0)

在我的情况下,我更改了包含.sln文件的基本文件夹的名称,因此我收到此错误。我将根文件夹更改回早期版本,错误得到修复。