У меня есть два исходных файла:
file.h:
class Numbers
{
public:
int Get10();
int Get192();
float GetFloat();
};
file.cpp:
int Numbers::Get10()
{
return 10;
}
int Numbers::Get192()
{
return 192;
}
float Numbers::GetFloat()
{
return 3213.1294124f;
}
extern "C"
int Get10()
{
Numbers n;
return n.Get10();
}
extern "C"
int Get192()
{
Numbers n;
return n.Get192();
}
extern "C"
int GetFloat()
{
Numbers n;
return n.GetFloat();
}
Я собираю их в статическую библиотеку (libNumbers.a) и связываю их с MonoTouch через следующие аргументы mtouch:
-v -v -v -gcc_flags "-cxx -framework Security -L $ {ProjectDir}
-lNumbers -force_load $ {ProjectDir} /libNumbers.a "
Тогда в исходном файле C # у меня есть это:
[DllImport("__Internal",EntryPoint="GetFloat")]
public static extern float GetFloat();
Когда я вызываю GetFloat () из исходного файла C #, значение возвращается в 'NaN' вместо 3213.1294124f. Однако, если я вызываю Get10, я на самом деле получаю верное значение.