I'm currently working as a software development intern for a non-software company (focuses more on engineering) and am assigned projects, this is my first internship and I'm hitting roadblocks here and there and its taking a toll on the time and integrating my code within the company's codebase. Just wondering if there was any advice with dealing with these issues and if I should communicate my problems to supervisors and how.
Yes, you should always communicate your problems to superiors. Whoever assigned you the task should know it is taking longer than you thought. It's possible you could get easily unblocked when you report what's happening and they give you some information you were missing. It's possible they expect it to take this long and don't have any problems with your speed. But even if they can't speed you up or reassure you that your speed is ok, they need to know that they won't have the finished work when they expected to.
You should be having regular conversations and progress reports with the person who gave you the work, but I know many internships where people skimp on this. Simply approach the person and ask for 15 minutes to discuss your status and progress. You may get it on the spot or a meeting might be set up between the two of you. Stick to the time you're allowed. Start with your status and any requests that you have (for example, "I have one report finished and I thought the second one would go faster, but it's going slower" is a status report, and "I wish I could find more documentation on the database schema" is a request.) They will ask for details if they want or need them.
Repeat as needed. If they suggest making it a regular thing (say, once a week, accept with delight.)