Вы можете вызывать функции DLL из другой библиотеки DLL. Просто объявите функцию:
function calculdiameter(const radius : double) : double; stdcall; external 'b.dll';
Тогда назовите это:
function CircleArea(const radius : double) : double; stdcall;
begin
// I don't know why you'd call this function here, but you can if you want to.
Calculdiameter(radius);
Result := Pi * radius * radius;
end;
То, что вы не можете сделать, это изменить содержимое DLL. Как вы сказали, B.DLL - это черный ящик. Вы можете вызывать функции, которые он экспортирует, но если то, что он экспортирует, не то, что вы хотите, тогда вам нужно найти то, что вы хотите где-то еще.