尝试将静态C ++库链接到MonoDevelop时出现编译器错误

时间:2011-07-09 11:16:02

标签: iphone mono xcode4 xamarin.ios monodevelop

我在xcode中创建了一个非常简单的C ++库,基本上是:

//Numbers.h
class Numbers
{
public:
 int Get10();
}

//Numbers.cpp
int Numbers::Get10()
{
  return 10;
}

我把它编译成一个静态(调试)库,然后小心地跟着the instructions here直到第2步,我无法继续前进,因为代码将不再编译,这基本上是编译器在给出之前输出的我''mtouch失败,无输出'消息:

  

/Developer/Platforms/iPhoneSimulator.platform/Developer/usr/bin/gcc-4.2   -arch i386 -gdwarf-2 -fobjc-legacy-dispatch -fobjc-abi-version = 2 -miphoneos-version-min = 4.3 -isysroot /Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk   /var/folders/-M/-Mb3Z8vAGIqK88qeV-fXk++++TI--Tmp-/tmp216a96e0.tmp/main.x86.o -o / var / folders / -M / -Mb3Z8vAGIqK88qeV-fXk ++++ TI /-Tmp-/tmp216a96e0.tmp/ChicksnVixens   -framework CFNetwork -framework Foundation -framework OpenGLES   -framework UIKit -framework AudioToolbox -framework QuartzCore   -framework CoreFoundation -framework CoreGraphics -framework AudioToolbox   -lz -u _mono_pmip -u _CreateZStream -u _CloseZStream -u _Flush -u _ReadZStream -u _WriteZStream -liconv -lmono-2.0 -lmonotouch -L / Developer / MonoTouch / SDKs / MonoTouch.iphonesimulator.sdk / usr / lib   -u _catch_exception_raise -L / Users / ahmedhakeem / Documents / Projects / goodjabberengine / MyCode / ChicksnVixens   -lMylibrary -cxx -force_load /Users/ahmedhakeem/Documents/Projects/goodjabberengine/MyCode/ChicksnVixens/libLogger.a

我非常强烈怀疑编译器无法找到libLogger.a,因为如果我将libLogger.a更改为类似abc.a(不存在),我会遇到同样的问题。我确实知道libLogger.a存在于MyCode / ChicksnVixens /下的目录指定目录中,并且它包含在源层次结构中。

有关如何解决此问题的任何想法?我有点怀疑它可能与我使用xcode 4进行编译有关吗?

或问题可能是我传递的论据:

-gcc_flags "-L${ProjectDir} -lMylibrary -cxx -force_load ${ProjectDir}/libLogger.a"

我必须按照说明添加“cxx”但是如果没有看到它我可能做错了吗?

1 个答案:

答案 0 :(得分:1)

我相信这是你传递的论据,也许可以尝试:

-gcc_flags "L${ProjectDir} -lLogger -cxx -force_load ${ProjectDir}/libLogger.a"

(假设它仍然被称为libLogger) - 它正在尝试加载libMyLibrary,但您将其指向libLogger