If you give us a full Minimum Working Example
then we can test what may go wrong, however using your code labelling B as X works for me.
\documentclass{article}
\usepackage{venndiagram}
\begin{document}
\begin{venndiagram2sets}[labelNotAB={A c B},labelOnlyB={X}]
\fillANotB
\end{venndiagram2sets}
\end{document}
A comment was made that perhaps contrary to your statement the desired answer is more elaborate, with A & B outside so in order to get this.

We need more elaborate positioning code for A B and possibly X, see if you can spot the differences, adjust and compile to suit with this code
\documentclass{article}
\usepackage{venndiagram}
\begin{document}
\begin{venndiagram2sets}[labelNotAB={A c B},labelA={},labelB={},shade=gray]
\fillOnlyA
\draw (0.7,3.14) node {A};
\draw (4.3,3.14) node {B};
\draw (3.7,1.65) node {X};
\end{venndiagram2sets}
\end{document}