I want to make DLLs of my code (not the source) publicly available for any type of usage, but the code depends on a GPL-licensed DLL and a 3-clause BSD licensed DLL. What license should I use? And is this even allowed?
I assume you will be loading the GPL-licensed DLL from your code? If that is the case, it is considered dynamic linking.
I am not a lawyer, but I believe you will have to use a license that satisfies all of the GPL requirements. For example, if the DLL is GPLv2, and you are dynamically linking with this DLL, you should probably also license your code under GPLv2. If the DLL is GPLv2+ (GPLv2 or any later version), you could pick GPLv2 or GPLv3 for your code.
The BSD license is more permissive, so the BSD DLL doesn't play as much of a factor as the GPL-licensed DLL in deciding which license you can choose for your code.
is this even allowed?
It is important to note that the BSD 3-clause license is compatible with the GPL. This means you are allowed to use both DLLs that you mentioned in the same program, so yes, that is allowed. You could not load a proprietary DLL from this same program because it is not license-compatible with the GPL DLL.