У меня есть встроенный проект IoT, который я хотел бы сначала разработать частично с использованием таких инструментов для ПК, как VisualStudio. В моем встроенном проекте есть только флэш-память для файловой системы, и я бы хотел перенаправить fopen
fread
и т. Д. На мою собственную частную реализацию в Windows. Но то, с чем я сталкиваюсь, это неспособность моей частной библиотеки CRT иметь приоритет над встроенной CRT (например, встроенное поведение, управляемое /MD
переключателем компилятора).
У меня есть простое решение для трех проектов.
Project 1 - это исполняемый файл теста. Он имеет одну строку main:
int main()
{
test();
}
Проекты 2 и 3 являются статическими библиотеками. Проект 2 имеет:
#include <string.h>
#include <stdio.h>
void test()
{
printf("%s\n", strchr("x", 'x'));
}
Проект 3 имеет:
char * strchr(const char * s, int c) // exact signature of MSVC
{
return "overridden";
}
Я ожидаю, что результат будет overridden
, но вместо этого
x
Но если я добавлю это в Проект 1:
printf("%s\n", strchr("y", 'y'));
Выход будет
overridden
overridden
Первый из test()
в библиотеке, второй из исполняемого файла main()
напрямую.
Есть предложения?