Обычно каждая единица перевода генерирует объектный файл, содержащий определения символов, определенных в этой единицы перевода. Чтобы использовать эти символы, вам необходимо связать эти объектные файлы.
В разделе gcc вы должны указать все объектные файлы, которые должны быть связаны вместе в командной строке, или скомпилировать файлы реализации вместе.
g++ -o test objectFile1.o objectFile2.o -lLibraryName
Здесь libraryName
- это просто имя библиотеки, без добавления к платформе. Так, например, в файлах библиотеки Linux обычно называют libfoo.so
, но вы должны писать только -lfoo
. В Windows этот же файл можно назвать foo.lib
, но вы будете использовать тот же аргумент. Возможно, вам придется добавить каталог, в котором эти файлы можно найти, используя -L‹directory›
. Обязательно не записывайте пробел после -l
или -L
.
Для XCode: добавьте пути поиска заголовка пользователя -> добавьте путь поиска библиотеки -> перетащите фактическую ссылку библиотеки в
В MSVS файлы, добавленные в проект, автоматически связывают их объектные файлы, и будет создан файл lib
(в общем использовании). Чтобы использовать символы в отдельном проекте, вам нужно будет добавить файлы lib
в параметры проекта. Это делается в разделе Linker свойств проекта в Input -> Additional Dependencies
. (путь к файлу lib
должен быть добавлен в Linker -> General -> Additional Library Directories
). При использовании сторонней библиотеки, которая предоставляется с файлом lib
, отказ в этом обычно приводит к ошибке.
Также может случиться так, что вы забудете добавить файл в компиляцию, и в этом случае объектный файл не будет сгенерирован. В gcc вы должны добавить файлы в командную строку. В MSVS добавление файла в проект заставит его скомпилировать его автоматически (хотя файлы могут, вручную, быть отдельно исключены из сборки).
В программировании Windows контрольный знак, который вы не связывали необходимая библиотека состоит в том, что имя неразрешенного символа начинается с __imp_
. Посмотрите имя функции в документации, и она должна сказать, какую библиотеку вам нужно использовать. Например, MSDN помещает информацию в поле внизу каждой функции в разделе «Библиотека».
Попробуйте это (с неправильными именами рабочих переменных, но с его работой) -
<?php
$str = "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
$mstr = explode(",",$str);
$a = array();
foreach($mstr as $nstr )
{
$narr = explode("=>",$nstr);
$narr[0] = str_replace("\x98","",$narr[0]);
$ytr[1] = $narr[1];
$a[$narr[0]] = $ytr[1];
}
print_r($a);
Codepad Link - http://codepad.org/EqysY1CZ
Вам нужно использовать функцию разрыва в PHP. refer-> http://cz1.php.net/explode
Я хотел практиковать регулярное выражение. Одна из больших проблем заключается в том, что ваша строка имеет как ','
, так и ', '
как разделители, поэтому вам нужно исправить это.
<?php
$var = "'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
$var = str_replace(', ', ',', $var);
$rows = explode(',', $var);
$array = [];
foreach($rows AS $row){
preg_match("/^'(.+)' \=\> '(.+)'\$/", $row, $matches);
$array[$matches[1]] = $matches[2];
}
var_dump($array);
?>
Пример: http://ideone.com/4oad4t
попробуйте этот код и используйте метод explode () и foreach, чтобы получить ваш выход
<?php
$string="'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
$a=explode("=>",$string);
$c=array();
$i=0;
foreach($a as $k=>$v){
if($i%2==0){
$b[]=$v;
}else{
$c[]=$v;
}
$i++;
}
$d=array_combine($b,$c);
print_r($d);
?>
Самый быстрый и простой, но ДЕЙСТВИТЕЛЬНО ИНСЕКЦИЯ
$str = "array('3'=>'www.tension.com','1'=>'www.seomeuo.com','requestedBy'=>'1')";
eval("\$array = $str;");
Вы никогда не должны использовать этот подход, есть другие способы сделать это как: serialize()
и unserialize()
Грязная логика находится здесь:)
<?php
$str="'status' => '-1','level1' => '1', 'level2' => '1', 'level9' => '1', 'level10' => '1', 'start' => '2013-12-13', 'stop' => '2013-12-13'";
echo $str='$arr='.'array('.$str.');';
eval($str);
echo "<pre>";
print_r($arr);
?>